Rails 3中,如何保护和保护控制器和URL

问题描述:

我有点新的轨道,我想要的就是保护用户个人资料Rails 3中,如何保护和保护控制器和URL

我的意思是,如果用户登录1,进入编辑他的个人资料他可以,而且如果他改变URL以用户#2他们也可以改变他们的信息

本地主机:3000 /用户/ 2 /编辑

我有点失落,任何帮助将是非常感谢,或者好书/博客的建议

作为身份验证的一部分,添加一个sessi on variable,session [:user_id] = User.Authenticate(params [:user] [:username],params [:user] [:password)(这是一般模式,您需要添加另一个资源进行身份验证)。

然后添加一个before_filter函数到您的控制器,并检查会话[:user_id] == params [:id]。看看这里:before_filter

Rails Security Guide可能是开始

以防万一,这是有用的人的好地方,我测试我的应用程序是,当碰到东西,虽然说还没有登录用户无法访问受限制的内容,一旦用户登录,他们可以将网址更改为另一个用户ID,例如。

/users/3然后它会显示用户的主页。所以任何用户都可以看看其他用户,这不是我想要的。

要解决这个问题,我改变了用户控制,以确保对这样的:

class UsersController < ApplicationController

#first call the correct_user function before allowing the show action to proceed

before_filter :correct_user, only: [:show]

...

def show
#do whatever here
end

...

private

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