CanCan +设计用于设计用户模型

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)

我在哪里添加这个,所以我可以拥有用户模型的权限,因为我没有用户控制器?

谢谢

Fab*_*bio 7

您可以将该代码添加到您需要身份验证的任何控制器,您不需要 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

  • 您可以使用CanCan创建自定义功能(例如`can?:edit,:password`),并根据应用程序的需要进行检查. (2认同)