我对rails很新,我想要的是保护用户个人资料
我的意思是如果用户1登录并且可以编辑他的个人资料,但是如果他将用户的URL更改为#2他们也可以更改他们的信息
本地主机:3000 /用户/ 2 /编辑
我有点迷失,任何帮助将不胜感激,或好书/博客的建议
答案 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