我繼承了一個應用程序更新用戶的配置文件的以下行爲:如何在使用Authlogic時編寫和測試密碼更改?
class UsersController < ApplicationController
# ...
def update
@user = current_user
if @user.update_attributes(params[:user])
flash[:notice] = "Successfully updated profile."
redirect_to root_url
else
flash[:error] = "Hrm, something went wrong."
render :action => 'edit'
end
end
end
的形式PUT
S(真POST
s的一個_method=PUT
)到行動有password
和password_confirmation
場,但沒有old_password
場。我已經通過測試發現,我甚至不需要填寫password_confirmation
字段。
第一個問題:在使用Authlogic時,是否有一種更爲確定的密碼更改方式?
第二個問題:有沒有關於密碼更改的最佳實踐(特別是從可用性的角度來看)的文獻?它應該是一個單獨的形式,不與其他用戶字段混合?
第三個問題:大多數網站都有old_password
字段,但Authlogic似乎並不支持本地。 Authlogic-ey確認用戶自己改變密碼的方式是什麼,而不是那些黑客攻擊會話的人?
我得到密碼更新的麻煩的原因是我在做{@user = Factory(:user),UserSession.create(@user )}在一個整體設置塊中,然後在內部設置塊中再次執行{@user = Factory(:user)}'並檢查該用戶的密碼更改,但實際上在外部更改該密碼。 D'哦! – 2010-02-10 17:17:14