加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-4 – 使用CanCanCan或Pundit的字段级权限

发布时间:2020-12-17 02:56:04 所属栏目:百科 来源:网络整理
导读:我目前正在使用带有CanCanCan 1.13.1的Rails 4.1.14,并在模型/记录级别上定义了细化权限.管理员可以管理所有文章,但用户只能编辑他们撰写的文章. 为了防止普通用户编辑特定字段,我根据角色在rails_admin中显示字段. visible do bindings[:object].id == bind
我目前正在使用带有CanCanCan 1.13.1的Rails 4.1.14,并在模型/记录级别上定义了细化权限.管理员可以管理所有文章,但用户只能编辑他们撰写的文章.

为了防止普通用户编辑特定字段,我根据角色在rails_admin中显示字段.

visible do 
  bindings[:object].id == bindings[:view].current_user.roles.include? :admin
end

我还使用https://github.com/aasm/aasm gem并创建自定义操作,以便用户可以将记录移动到新状态.

但我真正想要的是根据用户的角色/记录启用字段级权限.我在CanCanCan或https://github.com/elabs/pundit页面上找不到任何文档.

有人有经验吗?

解决方法

您的意思是应该允许管理员编辑记录的所有字段,但只允许编辑器更改字段x和y?

是的,这在专家中是可行的,因为它集成了强参数(无论如何你应该使用它). pundit readme中还有一个例子(参见:强参数).我从自述文件中简化了示例:

# post_policy.rb
def permitted_attributes
  if user.admin?
  [:title,:body,:tag_list]
else
  [:tag_list]
end

# posts_controller.rb
@post.update_attributes(permitted_attributes(@post))

控制器中的allowed_attributes助手由pundit提供,并自动调用被动策略的allowed_attributes方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读