阻止用户访问其他用户帐户

时间:2012-07-26 20:13:32

标签: ruby-on-rails-3 authentication

我有一个普遍的问题......

我使用Michael Hartl的教程示例构建了我的用户模型。我遇到麻烦的是改变网址以及其他用户的信息。我正在使用从id - >更改的Friendly_id;名称,但如果我将顶部的名称更改为另一个用户,它将显示其主页。我想限制我的用户无法做到这一点。

如果没有Devise或CanCan的实施,这可能吗?尝试抛出一个验证,检查用户是否尝试更改URL栏上的名称,即检查该名称是否是当前登录的用户,如果没有,则重定向回当前用户。

如果您需要型号信息,请告知我们。

TIA

2 个答案:

答案 0 :(得分:2)

您可以在before_filter上放置UsersController验证此方案,如下所示:

# Each time you make an action on your UsersController this filter will run
before_filter :validate_url_hack

def validate_url_hack
  # Check the params hash to see if the passed :id matches the current user's id
  # (note the .to_i on params[:id], as you are comparing against a Fixnum)
  unless params[:id].to_i == current_user.id
    # This line redirects the user to the previous action
    redirect_to request.referer
  end
end

这只是猜测,但我相信这样的事情应该有用。

答案 1 :(得分:2)

您要限制为特定用户的所有模型应与您的用户模型具有belongs_to关联,以便在您的控制器中执行

current_user.cars

并且您永远不应该在URL中传递用户ID。这可以说明你正在使用设计。