首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails 4用户角色和权限

Rails 4用户角色和权限
EN

Stack Overflow用户
提问于 2014-08-13 03:51:32
回答 2查看 23.8K关注 0票数 18

我正在为一个组织编写一个rails应用程序。每个用户可能有一个或多个角色,并且只能根据这些角色访问特定的控制器操作。

例如,只有管理员才能创建、销毁和更新User的某些字段。此外,还有一些Team,每个Team都有一个组长,并且只有组长才能更新有关该the的某些信息(例如,成员列表)。然而,Admins是第一个指派团队领导的人。

我的场景的具体细节并不重要,我只希望我描述了有许多不同角色和权限的情况。

我的问题是:使用什么gem?我的第一个想法是CanCan,但最后一次提交是在一年前,没有提到与Rails 4的兼容性。有没有目前维护的替代方案?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-13 03:54:59

你的第一个猜测是正确的,使用cancancan,你会很好地使用它。

编辑2015年7月24日

我已经使用cancancan很长一段时间了,它总是工作得很好。我最近开始了一个使用Pundit进行授权的项目。

这太棒了。它会提示您为每个资源定义策略,并且感觉比一个臃肿的能力类更自然。

对于更大的项目,我绝对会推荐Pundit。

票数 28
EN

Stack Overflow用户

发布于 2017-03-15 04:25:04

有人向我建议我们现在使用的是petergate gem。易于使用,外观非常整洁,有很好的rails感觉。

可以很好地与devise配合使用。

以下是自述文件中的一些示例。

如果你正在使用devise,那你就走运了,否则你将不得不在你的项目中添加以下方法:

代码语言:javascript
复制
user_signed_in?
current_user
after_sign_in_path_for(current_user)
authenticate_user! 

这会出现在你的User.rb中。添加更多角色与将其添加到数组中一样简单。

代码语言:javascript
复制
petergate(roles: [:admin, :editor], multiple: false)

实例方法

代码语言:javascript
复制
user.role => :editor
user.roles => [:editor, :user]
user.roles=(v) #sets roles
user.available_roles => [:admin, :editor]
user.has_roles?(:admin, :editors) # returns true if user is any of roles passed in as params.

控制器访问语法。

代码语言:javascript
复制
access all: [:show, :index], user: {except: [:destroy]}, company_admin: :all
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25272911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档