gpt4 book ai didi

authorization - 使用 cancan 防止访问 Controller

转载 作者:行者123 更新时间:2023-12-04 00:02:37 29 4
gpt4 key购买 nike

我有一个管理员 Controller ,我希望只有定义为管理员的用户才能访问该 Controller 。

我的能力等级:

class Ability
include CanCan::Ability

def initialize(user)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
end

我的管理员 Controller :
class AdminController < ApplicationController
load_and_authorize_resource

def index
end

def users_list
end
end

当我尝试访问 /admin/users_list (无论有没有管理员用户)我收到以下错误: uninitialized constant Admin
我做错了什么?这是限制访问 Controller 的正确方法吗?

最佳答案

这是因为当您使用 时load_and_authorize_resource 您的 Controller 必须由名为 的模型支持管理员 (因为您的 Controller 称为 AdminController)。因此,您需要创建此模型或替换 load_and_authorize_resource 与:

authorize_resource :class => false



这会导致针对您的操作而不是模型进行访问检查。请注意,这很不幸会导致通用访问符号,例如 :管理 :阅读 停止工作,要求您直接在 中引用 Controller 操作能力.rb :

can [ :index, :users_list ], :admin



其中第一个参数是用户可以访问的 Controller 操作数组,第二个参数是 Controller 的短名称

关于authorization - 使用 cancan 防止访问 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4530206/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com