javascript - 登录后的 Assets 管道

标签 javascript ruby-on-rails authorization asset-pipeline

我开发了一个目前使用大量 javascript 的 Rails 应用程序。
大多数 javascript 是我自己生成的代码,通常只在少数地方使用(全部由经过身份验证的用户使用)。

基本上,我想做的是只允许用户在登录并获得授权后访问这些 js 文件(我使用 devise 和 cancan 进行身份验证和授权)。
我仍然希望这些文件像 Assets 管道一样被预编译(连接和最小化),但是这些文件应该存储在公众无法访问的地方,并且只有在用户被授权时才由 rails(或类似的)提供服务访问它们。

我尝试过搜索但失败了,但我觉得我一定遗漏了一些简单的东西,因为这是许多 Rails 应用程序中常见的做法。
因此,我希望得到一些帮助来查找有关此事的信息,因为除了手动编译 js 文件并将其添加到用户有权访问的 View 之外,我不知道我能做什么。

如有任何帮助,我们将不胜感激!

编辑:

澄清我的问题: 我想尝试找到类似于 Assets 管道的东西,它将像往常一样连接和最小化 js 文件。

然后,当用户试图访问这个js文件时:
1. 如果用户已登录,则js文件正常提供给用户。
2. 如果用户未登录,则会向用户显示一条错误消息(或 401 未授权,或 404 未找到,或类似信息),这意味着未经授权的用户无法访问脚本。

基本上,这与您尝试访问您无权查看的 json 文件时发生的情况类似。

最佳答案

您可以简单地为登录用户使用不同的布局或呈现部分内容,其中包括您预编译的 javascript。

例如在 application.html.haml

- if current_user.
  = javascript_include_tag "your_special_user_js"

我不知道这是否回答了您的问题,但据我了解,您正在尝试实现此行为。

关于javascript - 登录后的 Assets 管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17531464/

相关文章:

javascript - 如何将来自 Ajax 的数据集成到 chart.js 中

javascript - 使用 <a name> 时 Accordion 不会打开

java - Openshift:如何在java中获取服务帐户的 token

asp.net - 使用带有重写 URL 的表单例份验证/授权

javascript - knockout : Iterate over object and show value in dropdown

javascript - 向下滚动时如何加载YouTube视频内联搜索?

ruby-on-rails - 如何在 ActiveModel::Serializer 中使用 `root_url`?

ruby-on-rails - ActiveRecord::Base 的未定义方法#sanitize

ruby-on-rails - 在现有路由的 rspec 测试中找不到路由

java - 如何自定义 PicketLink AuthenticationFilter?