我正在尝试使用魔法和轨道4,我正在努力了解阻止用户编辑或销毁不属于他们的内容的方法。说,我有一篇博客文章和某个类似
的小组<% if current_user? %>
<ul>
<li><%= link_to "edit", edit_post_path %></li>
<li><%= link_to "destroy", @post, method: :delete %></li>
</ul>
<% end %>
当然,注销的用户无法看到这些控件,但是无论谁登录都可以自由删除或编辑帖子。
答案 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