2012-10-22 81 views
0

我正在使用設計的rails 3.2.x來驗證用戶密碼。 我正在更新一頁,允許用戶更新他的密碼。但即使提供了錯誤的當前密碼,用戶也可以更新他/她的密碼。如何設計允許我更新密碼而不通過當前密碼?

軌道控制檯也出現同樣的情況。

@user = user.update_attributes :password => "some_password" 

更新@用戶的密碼。

如何擺脫這種麻煩?

UPDATE: 我可以更新錯誤current_password參數用戶密碼update_attributes方法方法一樣,

@user = user.update_attributes :password => "some_password", :current_password => "wrong_password" 
+0

你的問題是什麼。是否允許用戶在不提供當前密碼的情況下更新密碼? –

+0

不,不應該允許用戶在未提供正確的current_password的情況下更新其密碼。 –

回答

1

想通了,

而是採用

user.update_attributes(params[:user]) 

可以使用

user.update_with_password(params[:user]) 

這將確保當前密碼是有效的。

0

也許你需要使用

before_filter :authenticate_user!

+0

感謝您的時間,但問題不在於驗證當前用戶,而是使用正確的當前密碼更新密碼。但時間正在設計,允許用戶更新密碼,而無需將current_password傳遞給update_attributes方法。 –

0

可能是你需要添加:password => "some_password":confirm_password => "some_password" 或者你必須添加控制器:before_filter => authenticate_user!.

+0

感謝您的時間Sumit,但我的設計是讓我用錯誤的current_user參數更新密碼update_attributes方法。 –

+0

是否要更新或更改其他用戶參數? –

+0

我想更新用戶的密碼。 –