2

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

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

我尝试过搜索但失败了,但我觉得我一定错过了一些简单的东西,因为这在许多 Rails 应用程序中是非常常见的做法。
因此,我希望获得一些帮助来查找有关此问题的信息,因为除了手动编译 js 文件并将其添加到用户有权访问的视图中之外,我无能为力。

任何帮助,将不胜感激!

编辑:

澄清我在问什么:我想尝试找到类似于资产管道的东西,它将像往常一样连接并最小化 js 文件。

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

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

4

1 回答 1

0

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

例如在application.html.haml

- if current_user.
  = javascript_include_tag "your_special_user_js"

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

于 2013-07-08T16:37:21.353 回答