2

我有一个人们可以写帖子的网络,他们有他们自己帖子的个人信息源,以及每个人的网络信息源。

问题是,任何omniauth'ed 用户都可以通过在URL 上输入/edit 或delete 来编辑另一个用户。

无法将其用于实时站点!

有没有人可以快速回答如何阻止它?我有:

before_filter :authenticate_user!, :except => [:index, :show]

但我无法确定如何将编辑锁定到创建帖子的用户。

模型-user.rb

class User
  has_many :posts
end

模型 - post.rb

class Post
  belongs_to :user
end

如果您想查看更多信息,请告诉我 - 感谢您的帮助!-D

4

2 回答 2

3

如果我没看错,您的用户是通过 OmniAuth 进行身份验证的,但现在您正在寻找一种方法来根据权限或所有权为特定资源/操作“授权”他们。

为用户、组、角色和中间人授权资源/操作的最流行的 gem 是 CanCan。

可以,你能做CanCan吗?

还有一个railscast 视频帮助我了解 gem 在我的应用程序中的应用。

一旦您知道如何在 CanCan 中编写功能,请在此处查看一种功能,该功能可以根据父用户解决您关于帖子编辑的原始问题。

于 2013-07-25T16:42:26.477 回答
1

如果您在没有 CanCan Gem 的情况下从头开发应用程序,请使用此方法

def logged_in_user
   unless current_user?(@model.user)
     flash[:danger] = "You do not have authorization to edit this post" #if not logged in as the owner of the post
     redirect_to login_url
   end
  end

并确保您已设置好之前的操作

before_action :logged_in_user,仅:[:edit, :update, :delete]

于 2016-03-14T20:47:41.000 回答