我已经让 Devise 在我的 rails4 应用程序中工作了很长一段时间。现在我需要添加不同的角色决定使用 Cancan 来完成此任务。
在开发中一切都运行良好,但是当我将代码部署到生产环境时,我得到的只是无限重定向循环。如果我删除 cookie,我可以获得登录页面,但登录会在同一个循环中结束。
我的根重定向到控制器索引操作。
我基本上只有一个具有任何业务逻辑的控制器,并且我的根重定向到该控制器中的索引操作。
来自控制器的相关线路。
load_and_authorize_resource
skip_authorization_check :only => [:index]
但我也试过这个:
before_action :authenticate_user!
此外,之前还附加了这两个(分别)
:except => [:index]
:unless => :devise_controller?
在 ApplicationController 我将所有这些都放在一起并分开
check_authorization :unless => :devise_controller?
before_filter :authenticate_user!, :unless => :devise_controller?
这两个我都试过了,除非声明。
我尝试按照相关的 wiki 进行操作,但似乎无法使其在生产中发挥作用。如果这有什么不同,我将在生产中使用 Nginx/Passenger 组合。
在写这篇文章时,我意识到我一直在使用 Cancan 1.6,但我还没有尝试过 Cancancan。接下来会试一试。
所有的帮助都会得到重视。
更新:我用 Cancancan 1.9.2(而不是 Cancan 1.6)尝试了这个,结果相似。在找到解决方案或替代授权宝石之前,我暂时禁用了它。