railstutorial第9章限制用户访问

时间:2014-03-20 21:52:09

标签: ruby-on-rails ruby-on-rails-4 railstutorial.org

我按照railstutorial.org中的教程。我注意到如果我使用网址 本地主机:3000 /用户/ 102

登录或退出,我可以查看个人资料。如果我将102更改为另一个现有用户,我也可以查看它。如何限制对此页面的访问?我希望只有当前用户才能查看他/她的个人资料。

我是rails的新手。

我知道它必须在代码

中使用users_controller.erb
def show
    @user = User.find(params[:id])
end

2 个答案:

答案 0 :(得分:3)

这取决于您如何定义current_user帮助程序。例如,如果您使用Devise进行身份验证,那么它将是if current_user == @user,但我相信该教程的帮助程序,下面的方法应该可以正常工作。

def show
   @user = User.find(params[:id])
   if current_user?(@user)
      # show page
   else
      # render error page?
      flash[:error] = "Nope" # Clearly here you can do whatever you want, from error pages to redirections
      redirect_to root_path
   end
 end

答案 1 :(得分:0)

似乎正确的解决方案是添加另一个功能

在顶部它将是

before_action :correct_user,   only: [:edit, :update]
before_action :correct_user_return,   only: [:show]

然后在私人部分中它将是

def correct_user_return
    @user = User.find(params[:id])
    redirect_to current_user unless current_user?(@user)
end