gpt4 book ai didi

ruby-on-rails-3 - 设计和当前用户

转载 作者:行者123 更新时间:2023-12-02 00:33:16 25 4
gpt4 key购买 nike

我已设置 Devise 来管理对我的应用程序的身份验证。

我有一个类别模型,用户可以在其中创建自己的类别。用户 has_many :类别。这个模型有一个 user_id 属性,所以当有人登录并转到类别/索引时,例如,从 Controller 查询将使用 current_user.id 来过滤掉要带的类别。

到目前为止直截了当并且运作良好,似乎没有人能够看到别人的类别,但老实说,除非我遗漏了什么,否则这似乎有点不安全。我怎么知道一些黑客不会弄清楚并发送他自己的修改参数的请求?

这是可能的还是我多疑了?另外,我可能没有正确使用该功能?

最佳答案

假设您在 userscategories 之间使用正确的关系,即

# in User.rb
has_many :categories

# in Category.rb
belongs_to :user

你应该能够在你的 Controller 中使用这样的东西:

@categories = current_user.categories

这样一来,无论传递什么参数,您都在使用当前用户,并且只会获取他们的画廊。您不再通过可能不安全的 user_id 进行搜索。

如果您担心有人能够查看不属于他们的类别,您可以添加自己的类似于 :authenticate_user! 的私有(private)方法,以确保显示的类别或edited 实际上属于当前用户,像另一个一样在 before_filter 中运行它,如果他们没有权限则重定向。

  private
def authenticate_owner!
if user_signed_in? && current_user.id == params[:id] # or something similar
return true
end
redirect_to root_url,
:notice => "You must have permission to access this category."
return false
end

关于ruby-on-rails-3 - 设计和当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5805454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com