gpt4 book ai didi

ruby-on-rails-3 - Rails 3 限制访问,以便用户只能更新他们的数据

转载 作者:行者123 更新时间:2023-12-01 21:27:03 24 4
gpt4 key购买 nike

这看起来应该是相当简单的事情,因为它会被大量需要。我检查用户是否正常登录,但一旦用户登录,他们可能会更改其他人的帐户。例如:假设 ID 为 1 的用户已登录,并且他们将/users/2/edit 作为 url。这将向他们显示用户 2 的数据并允许他们修改它。当然,我可以更改 Controller 中的编辑操作以使用类似的东西......

  def edit
@user = User.find(current_user.id)
end

其中 current_user 在 Controller 中设置,因此用户始终是登录的人。如果您只有几个具有几个操作的 Controller ,这很好,但如果您有很多 Controller ,这可能会很痛苦。似乎应该有一种方法来全局限制这种情况,这样用户无论使用什么操作或 Controller 都只能更新自己的数据。

有没有办法限制用户只能使用自己的数据进行所有操作?

最佳答案

在你的application_controller.rb中你可以尝试这个:

class ApplicationController < ActionController::Base
before_filter :validate_user

private

def validate_user() #might need to pass id and current_user
if current_user.id == params[:id]
# continue to current_user url
else
flash[:error] = "Please access one of your own pages"
redirect_to(:back)
end
end
end

通过将内容放入应用程序 Controller 中,它应该在所有 Controller 中可用,但是如果您不需要确认这是当前用户(例如主页),那么您可能需要在任何 Controller 中使用skip_before_filter需要它的特定 Controller (针对特定操作),例如在页面 Controller 中

class PagesController < ApplicationController
skip_before_filter :validate_user, :only => [:home, :about]
end

有关更多信息,请查看此 link to rails guides on filters 。也可能有更有效的方法来实现这一目标。

希望对你有帮助

关于ruby-on-rails-3 - Rails 3 限制访问,以便用户只能更新他们的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340310/

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