我已经让Devise在我的rails4应用程序中工作了很长时间。现在我需要添加不同的角色,决定使用Cancan来实现这一目标。
一切都在开发中工作得很好但是当我将代码部署到生产中时,我得到的是无限重定向循环。如果我删除cookie,我可以获得登录页面,但登录在同一循环中结束。
我的root重定向到控制器索引操作。
我基本上只有一个带有任何业务逻辑的控制器,我的root重定向到该控制器中的索引操作。
来自控制器的相关行。
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),结果相似。我暂时禁用它,直到找到解决方案或替代授权gem。