如何阻止用户在Omniauth(rails)中编辑其他用户帖子



我有一个网络,人们可以在这里写帖子,他们有自己帖子的个人订阅源,每个人的网络订阅源。

问题是,任何omniauth用户都可以通过在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

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

CanCan是为用户、组、角色以及介于两者之间的用户授权资源/操作的最流行的宝石。

Can,你能做CanCan吗?

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

一旦你知道如何在CanCan中编写能力,就可以在这里查看一个基于父用户的能力,该能力可以解决你在后期编辑中的原始问题。

如果您在没有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]

最新更新