Ruby on rails 使用cancancan';s使用自定义控制器检查DEVICE的授权?

Ruby on rails 使用cancancan';s使用自定义控制器检查DEVICE的授权?,ruby-on-rails,devise,cancan,ruby-on-rails-6,cancancan,Ruby On Rails,Devise,Cancan,Ruby On Rails 6,Cancancan,TL;DR(完整问题如下) cancan附带了check_authorization,它可以让你知道你是否忘记在应用程序的任何部分添加授权。本质上,我只是想知道是否有必要在应用程序的“设计”部分添加授权,或者设计是否能做到开箱即用?(例如,如果一个用户可以更改另一个用户的密码,那将是非常糟糕的!-是否需要通过cancan防止这种情况发生,或者Desive确保已经开箱了?) 完整问题 我已经设计好了坎坎坎,一切似乎都正常 当我添加了check\u authorization时,一切都继续工作,除了

TL;DR(完整问题如下)

cancan附带了
check_authorization
,它可以让你知道你是否忘记在应用程序的任何部分添加授权。本质上,我只是想知道是否有必要在应用程序的“设计”部分添加授权,或者设计是否能做到开箱即用?(例如,如果一个用户可以更改另一个用户的密码,那将是非常糟糕的!-是否需要通过cancan防止这种情况发生,或者Desive确保已经开箱了?)

完整问题

我已经设计好了坎坎坎,一切似乎都正常

当我添加了
check\u 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

奇怪的是,当用户更新他们的信息时,这一切都正常(没有错误)

非常感谢您的任何想法/建议

此外,我是否应该
跳过设备控制器上的授权检查
?尽管错误消息暗示了这一点,但听起来很危险

最后,我不知道如何访问Desive控制器以添加
跳过授权检查
。这是我的目录(使用Desive的用户控制器)


答案是您不必担心设备控制器上的
跳过授权检查

如果您收到任何其他控制器的此错误消息:

CanCan::AuthorizationNotExecuted(此操作未通过检查\u授权,因为它未授权\u资源。添加跳过\u授权\u检查以绕过此检查):
那么解决办法是

  • 向需要授权的资源(或其部分)添加授权,或
  • 如果资源不需要授权,只需跳过授权检查即可
  • 通过将其添加到资源中,可以跳过授权检查

    跳过授权检查
    
    您可以仅使用
    ,除了这样的

    跳过授权检查,除了:[:索引]
    

    仅跳过授权检查:[:显示,:编辑]