AnA*_*ice 1 ruby-on-rails devise cancan ruby-on-rails-3
使用设计,我有一个用户模型.我没有用户控制器.
要使用CanCan,我需要在控制器顶部(下方)执行此操作
# Authorization w Devise & CanCan
before_filter :authenticate_user! # Devise, signed in users only
load_and_authorize_resource # CanCan
Run Code Online (Sandbox Code Playgroud)
我在哪里添加这个,所以我可以拥有用户模型的权限,因为我没有用户控制器?
谢谢
您可以将该代码添加到您需要身份验证的任何控制器,您不需要 UsersController
before_filter :authenticate_user!
Run Code Online (Sandbox Code Playgroud)
此行需要使用devise登录的有效用户,因此如果您尝试使用此before_filter访问控制器而未进行记录,则将通过设计重定向到 sign_in_path
load_and_authorize_resource # CanCan
Run Code Online (Sandbox Code Playgroud)
另一行将实例变量填充为默认值(如果尚未设置),然后使用Ability
类检查您的权限,所以假设您有一个ArticleController
它将在幕后执行以下操作(实际代码基于当前操作)
# for the show action
@article = Article.find(params[:id])
raise CanCan::AccessDenied unless can(:read, @article)
Run Code Online (Sandbox Code Playgroud)
该can(:read, @article)
语句是CanCan库的基础,它将根据您的能力类返回一个布尔值.可以在这里阅读更多内容
如果您的整个应用程序需要身份验证,您只需将该before_filter :authenticate_user!
行添加到ApplicationController