1

我正在尝试使用魔法和 Rails 4,并且我正在努力理解阻止用户编辑或破坏不属于他们的内容的方法。说,我有一篇博客文章和某个地方的面板,就像

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

登出的用户当然看不到这些控件,但登入的用户可以自由地删除或编辑帖子。

4

1 回答 1

3

巫术是为了“认证”,但你面临的问题是“授权”。这两个是不同的概念。

“认证”是识别这个用户是谁,但无法判断他能做什么。

没有“身份验证”,“授权”就无能为力,但它的工作是不同的。它可以判断这个用户是否可以做某事。

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

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

示例代码

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

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

于 2013-10-17T15:16:04.653 回答