我一直在使用authlogic,它工作得很好。有一两件事我注意到的是,作为一个黑客,我可以轻松地输入该地址:Rails安全性:重定向,如果不是current_user
本地主机:: 3000 /用户/ a_user_that_is_not_me /编辑
由于在编辑表单的形式为@user这是设置为current_user并且需要一个真实性标记,即使我试图为其他用户提供详细信息,我最终会更改自己的帐户而不是其他用户。
这很好,但我希望它能让这些黑客在他们看到表单之前就重定向。
我在users_controller尝试这样的:如果我在与其他用户的姓名地址类型,但尝试访问的编辑页面为当前用户,当我得到一个404错误
def edit
if admin?
@user = params[:user]
elsif User.find_by_username(params[:id]) != current_user
@user = current_user
@not_user = User.find_by_username(params[:id])
redirect_to user_path(@not_user)
else
@user = current_user
end
end
重定向工作。
任何想法,为什么这是行不通的?
这似乎并没有工作。我收到错误“无法找到用户名为用户名=当前” 这与我之前得到的相似。 这可能是由于authlogic本身固有的东西,其中的URL出现为http:// localhost:3000/users/current/edit – 2010-01-27 22:43:11
除非有名为'current'的用户,否则我不希望这样做。如果你想让'/ users/current'引用当前用户,你将不得不明确地处理这种情况('if params [:id] =='current'...')。您还需要将验证添加到“用户”模型,以便用户不能选择“当前”名称。 – 2010-01-27 23:08:51
这似乎是通过authlogic gem自动设置的。我必须检查验证。 – 2010-01-27 23:20:59