Rails和Sorcery gem以及内容编辑的用户权限

时间:2013-10-17 14:59:11

标签: ruby-on-rails ruby-on-rails-4

我正在尝试使用魔法和轨道4,我正在努力了解阻止用户编辑或销毁不属于他们的内容的方法。说,我有一篇博客文章和某个类似

的小组
<% if current_user? %>
  <ul>
    <li><%= link_to "edit", edit_post_path %></li>
    <li><%= link_to "destroy", @post, method: :delete %></li>
  </ul>
<% end %>   

当然,注销的用户无法看到这些控件,但是无论谁登录都可以自由删除或编辑帖子。

1 个答案:

答案 0 :(得分:3)

巫术用于“身份验证”,但您面临的问题是“授权”。这两个是不同的概念。

“身份验证”用于识别该用户是谁,但无法判断他能做什么。

没有“authenticaton”,“授权”无能为力,但它的工作是不同的。它可以判断该用户是否可以做某事。

所以你的问题属于“授权”领域,这不是Sorcery的工作。

相反,您可以使用CanCan或其他宝石来获取权限。

示例代码

def user
  # Can delete and edit his own post
  can :manage, Post, :user_id => user.id
end

您可以查看CanCan了解详情:https://github.com/ryanb/cancan