问题标签 [cancan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 灿灿宝石 | 不能:索引,用户
非常基本的用户模型,我希望管理员用户:manage all
否则不能:索引,用户和其他一些选项,但是当我尝试阻止非管理员用户查看用户索引时,管理员用户也无权访问。
这是我的能力.rb
我可以做些什么来阻止所有用户被用户索引阻止?
问候
担
ruby-on-rails - 我是否应该使用 CanCan 跳过实例化资源的操作的授权?
我正在编写一个网络应用程序来从更大、完整的卡片组中随机选择卡片列表。我有一个 Card 模型和一个 CardSet 模型。两种模型都有完整的 RESTful 集 7 个操作(:index、:new、:show 等)。CardSetsController 有一个用于创建随机集的额外操作::random
.
我添加了用于身份验证的设计和用于授权的 CanCan。我有具有“编辑”角色的用户。允许编辑器创建新的 CardSet。来宾用户(未登录的用户)只能使用:index
和:show
操作。这些授权按设计工作。编辑器目前可以毫无问题地同时使用:random
和动作。:new
正如预期的那样,来宾用户不能。
我想允许来宾用户使用该:random
操作,但不允许该:new
操作。换句话说,他们可以看到新的随机集,但不能保存它们。操作视图上的“保存”按钮对:random
来宾用户隐藏(按设计)。问题是,该:random
操作所做的第一件事是构建 CardSet 模型的新实例来填充视图。当 cancan 尝试load_and_authorize_resource
一个新的 CardSet 时,它会抛出一个 CanCan::AccessDenied 异常。因此,视图永远不会加载,并且会为来宾用户提供“您需要先登录或注册才能继续”消息。
我意识到我可以通过传递给呼叫来告诉我load_and_authorize_resource
跳过该:random
动作,但出于某种原因:except => :random
,这只是感觉“错误” 。
这样做的“正确”方法是什么?我应该在不实例化新 CardSet 的情况下创建新的随机集吗?我应该继续添加例外吗?
更新
我没有在上面包括我的能力课程。我已对其进行了更新以包含 ':random' 操作,但它仍然无法正常工作。
ruby-on-rails - 在 Rails 中具有多个用户身份验证的一个帐户
对于以下问题,您会推荐哪种方法:我的应用程序需要一个帐户,多个用户在同一个帐户上输入任务。只有其中一位用户(打开帐户的用户)将拥有管理员权限。
我正在考虑使用 Authlogic 进行身份验证,使用 CanCan 来确定用户权限。关键是我希望打开帐户的用户默认是管理员,他是唯一能够为他的帐户生成具有不同权限的其他用户的用户。
ruby-on-rails-3 - Devise DoubleRenderError
Application-Stack: Rails3, CanCan, Devise, Shoulda
I've got some nested Resources and want to test them with Shoulda and i get the following DoubleRenderError:
The test is going to check whether a non authenticated user is able to access the nested resource ( he shouldn't )
TestMethod
ControllerMethod:
All tests with an authenticated user work fine - may someone can give me a hint. Thanks a lot! Ben
ruby-on-rails - 不同用户角色的不同视图集
我正在开发一个 Rails 应用程序,我有2 个不同的用户角色:高级和基本。
而不是隐藏基本用户视图中的链接(使用 CanCan 的ai)我想管理两组不同的视图:一个用于高级用户,一个用于基本用户。
目前我正在以这种方式工作:
但我不喜欢在每个操作中为基本用户指定模板({ render :template => "devices/index_basc.html.erb" })我认为还有其他方式(我希望更简洁:)
你有什么想法 ?
谢谢你,亚历山德罗
ruby-on-rails - CanCan的一些问题
(对不起我的英语不好 ;)
我开始使用 rbates 的 CanCan,这是一个很棒的宝石,但我有一些问题:我有 Scrap 模型并且有布尔字段 :published (所以,这意味着已发布/未发布(草稿))。
我的ability.rb中有这个规则:
因此,非作者无法编辑/更新/删除此对象。我想对我的“展示”动作做同样的事情(非作者无法阅读草稿,真的吗?;)这样做的真正方法是什么?
谢谢大家!安德烈·奥格涅夫斯基
ruby-on-rails - 从模型中访问 CanCan 的 `can?` 方法
您可以current_user
使用以下方式从视图或控制器获取 ' 权限can?
:
如何使用以下语法从模型访问此功能:
ruby-on-rails - 使用 CanCan 附加地定义权限
我的应用程序有 2 个角色:编辑者和管理员。我希望编辑拥有一些权限,而管理员拥有所有编辑权限以及其他一些权限。
这是我的摘录ability.rb
由于所有管理员也是 editors,我希望这将定义这些权限:
- 管理员可以阅读和编辑所有帖子
- 编辑可以阅读所有帖子,但只能修改他们创建的帖子
但是,CanCan 似乎没有附加地定义权限——即,当 CanCan 看到用户是编辑者(即使用户也是管理员)时,它会应用更严格的权限(即,can :edit, Post, :created_by_id => user.id
而不是can :edit, Post
)。
有没有办法解决?显而易见的解决方案需要重复代码:
ruby-on-rails - 通过模型关联验证用户使用 CanCan 的能力
我有一个看起来像这样的 TakeAction 模型:
和一个看起来像这样的 TakeActionNote 模型:
使用 CanCan,我试图允许拥有 take_action 的用户创建和销毁(管理)笔记。
我试过用这样的方块来定义能力。
我可以毫无问题地向 take_action 添加注释,但是当我尝试销毁它时,我得到:
采取行动 notesController#33 中的 NoMethodError 未定义方法 `take_action' for nil:NilClass
我有什么遗漏或做错了吗?任何帮助表示赞赏。谢谢!
ruby-on-rails - CanCan 的 access_by(获取记录)中的 current_ability 是什么?
在 CanCan 的文档中,它显示了如何以这种方式获取所有可访问的记录:
但什么是current_ability
?我尝试传递用于身份验证和授权的当前用户,但出现此错误:
有什么想法我应该传递给accessible_by
什么或这里有什么问题?