如何设计允许我更新密码而不传递当前密码?

时间:2012-10-22 10:43:55

标签: ruby-on-rails-3 devise ruby-on-rails-3.2

我正在使用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"

3 个答案:

答案 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!.