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

时间:2011-06-09 02:42:09

标签: url controllers protection

我对rails很新,我想要的是保护用户个人资料

我的意思是如果用户1登录并且可以编辑他的个人资料,但是如果他将用户的URL更改为#2他们也可以更改他们的信息

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

我有点迷失,任何帮助将不胜感激,或好书/博客的建议

3 个答案:

答案 0 :(得分:1)

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

然后将一个before_filter函数添加到控制器并检查session [:user_id] == params [:id]。请看这里:before_filter

答案 1 :(得分:1)

Rails Security Guide可能是一个很好的起点

答案 2 :(得分:0)

以防这对某人有用,我在测试我的应用时遇到的情况是,虽然未登录的用户无法访问受限制的内容,但一旦用户登录,他们就可以将网址更改为另一个用户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