我正在使用rails 3.2.x with devise来验证用户密码。 在一个页面上,我正在更新,允许用户更新他的密码。但即使提供了错误的当前密码,用户也可以更新他/她的密码。
rails控制台也发生了同样的事情。
@user = user.update_attributes :password => "some_password"
更新@用户密码。
如何摆脱这个麻烦?
更新: 我可以使用错误的current_password参数将用户密码更新为update_attributes方法,如
@user = user.update_attributes :password => "some_password", :current_password => "wrong_password"
答案 0 :(得分:1)
想通了,
而不是使用
user.update_attributes(params[:user])
可以使用
user.update_with_password(params[:user])
这将确保当前密码有效。
答案 1 :(得分:0)
也许你需要使用
before_filter :authenticate_user!
答案 2 :(得分:0)
您可能需要添加:password => "some_password"
和:confirm_password => "some_password"
或者您必须添加控制器:before_filter => authenticate_user!.