[英]Using cancancan's check_authorization with devise with custom controllers?
TL; DR (下面的完整问题)
cancan 带有check_authorization
,它可以让您知道您是否忘记为应用程序的任何部分添加授权。 本质上,我只想知道是否有必要为应用程序的“设计”部分添加授权 - 或者设计是否开箱即用? (例如,如果一个用户可以更改另一个用户的密码,那将是非常糟糕的! - 这是否需要通过 cancan 来阻止,或者是否设计确保已经开箱即用?)
完整问题
我有设计和康康设置,一切似乎都有效。
当我添加check_authorization
,一切都继续工作,除了登录和退出不再起作用
CanCan::AuthorizationNotPerformed in Devise::SessionsController#destroy
This action failed the check_authorization because it does not authorize_resource. Add skip_authorization_check to bypass this check.
Extracted source (around line #266):
264
265
266
267
268
269
next if options[:unless] && controller.send(options[:unless])
raise AuthorizationNotPerformed,
'This action failed the check_authorization because it does not authorize_resource. '\
'Add skip_authorization_check to bypass this check.'
end
奇怪的是,当用户更新他们的信息时,效果很好(没有错误)
任何想法/指针非常感谢
另外,我应该在设备控制器上skip_authorization_check
吗? 尽管错误消息暗示了这一点,但听起来很冒险
最后,我不完全知道如何访问设计控制器以添加skip_authorization_check
。 这是我的目录(使用用户控制器进行设计)
答案是您不必担心skip_authorization_check
控制器上的skip_authorization_check
。
如果您收到任何其他控制器的此错误消息:
CanCan::AuthorizationNotPerformed (This action failed the check_authorization because it does not authorize_resource. Add skip_authorization_check to bypass this check.):
那么解决方案是要么
可以通过将其添加到资源来跳过授权检查
skip_authorization_check
你可以使用only
或except
像这样
skip_authorization_check except: [:index]
和
skip_authorization_check only: [:show, :edit]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.