2016-01-25 38 views
0

我目前正在保护我的应用程序,以便普通用户无法使用CanCanCan创建,编辑,更新或销毁某些对象。我也安装了Devise。这两个宝石都提供回调,以便用户不能执行某些操作,除非满足某个标准。如果CanCan回调存在,我是否需要Devise回调?

class ExampleController < ApplicationController 
    before_action :authenticate_user!, except: [:index, :show] # Devise 
    load_and_authorize_resource except: [:index, :show] # CanCanCan 
end 

在这种特殊情况下,用户只能拥有完全访问权限,如果他们是管理员。我在想,如果在控制器中存在两个回调会是多余的。

我看到它的方式是,如果用户不是管理员,并且正在尝试创建一个对象,那么将不需要对它们进行身份验证。我希望100%确信自己的想法,并确保用户可以执行任何偷偷摸摸的解决方法来访问这些页面。

回答

1

是的,这两者都需要。 设计回调将保证用户已注册,如果没有,它将抛出未经身份验证的错误。并且CanCanCan将保证您的用户有能力进行更改,否则会抛出未经授权的错误。

正确的了解两者相符,但稍后你可能会改变你的能力,那么你不应该改变控制器,最好从一开始就这样做。

编辑:我忘了提及它,但有两个不同的错误可以让你以不同的方式处理它们。例如,请求未经身份验证的用户登录,并且未经授权的用户停止与您的应用程序混淆(或者直接登录)

相关问题