【发布时间】:2010-02-09 18:40:12
【问题描述】:
我继承的应用程序具有以下更新用户个人资料的操作:
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
PUTs(实际上是POSTs 与_method=PUT)对该操作的表单具有password 和password_confirmation 字段,但没有old_password 字段。我通过测试注意到,我什至不必填写password_confirmation 字段。
第一个问题:使用 Authlogic 时是否有更成熟的密码更改方式?
第二个问题:是否有任何关于密码更改最佳实践的文献(尤其是从可用性的角度来看)?它应该是一个单独的表单,而不是与其他用户字段混合吗?
第三个问题:大多数网站都有一个old_password 字段,但 Authlogic 似乎本身并不支持该字段。什么是 Authlogic-ey 方式来确认实际上是用户他/她自己更改了密码,而不是有人入侵了他们的会话?
【问题讨论】:
-
我无法更新密码的原因是我在整体设置块中执行
{ @user = Factory(:user), UserSession.create(@user) },然后在内部设置块中再次执行{ @user = Factory(:user) }并检查密码更改该用户,但实际上在外部更改它。哦!
标签: ruby-on-rails ruby testing authlogic