gpt4 book ai didi

ruby-on-rails - 使用 Authlogic 时如何编写和测试密码更改?

转载 作者:数据小太阳 更新时间:2023-10-29 07:16:33 26 4
gpt4 key购买 nike

我继承的应用程序具有以下更新用户配置文件的操作:

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(实际上是 POST,带有 _method=PUT)到该操作的表单有一个密码password_confirmation 字段,但没有 old_password 字段。我通过测试注意到,我什至不必填写 password_confirmation 字段。

第一个问题:使用 Authlogic 时是否有更成熟的密码更改方法?

第二个问题:是否有任何关于密码更改的最佳实践(尤其是从可用性的角度来看)的文献?它应该是一个单独的表单,而不是与其他用户字段混合在一起吗?

第三个问题:大多数站点都有一个old_password 字段,但Authlogic 似乎本身并不支持该字段。什么是 Authlogic-ey 方式来确认实际上是用户自己更改了密码,而不是有人入侵了他们的 session ?

最佳答案

第一个答案:Authlogic 为您提供了框架,但实现取决于您。大多数网站只提供一个“更改密码”页面,它只显示“密码”和“密码确认”字段,或者一个“编辑个人资料”页面,允许您更新您想要在用户记录中更改的字段。根据用户记录中的字段数量,您可以选择单独的更改密码页面。您希望表格简短。

至于不需要password_confirmation:

  • 对于测试,这取决于您模拟它的方式或您正在测试的内容...是 Controller /表单还是您正在测试的模型?
  • require_password_confirmation true ? (默认)

第二个答案:你会发现那里有许多可用性标准,但我只是选择 KISS。从可用性的角度来看,大多数人都对什么是有效的和什么是已建立的感到满意——所以看看谷歌、Facebook 和 37signals。非常简单的过程。如上所述,简短形式是一个重要的可用性目标。

如果您在谈论安全要求,最好的选择是 PCI Compliance [PDF] 其中规定了传输和存储财务记录的几条规则,但没有提及用户凭据。如果您对帐户应用与信用卡相同的规则,您将拥有真正安全的设置。由于 PCI 合规性未能交付,银行是另一个值得关注的重要资源,因为糟糕的 session 处理可能会导致大量资金丢失。我的几个银行账户现在使用图像和安全问题来确认我的登录和密码更改,这些问题高于我的标准密码。我找到了 several good articles covering that

由此引出第三个问题...

第三个答案:在 AuthLogic 中,只需在您的 users_controller 中继续更新之前检查用户的“旧密码”字段:@user.valid_password?("旧密码")

像这样:

attr_accessor :old_password 添加到您的用户模型

并将您的用户 Controller 更改为:

def update
@user = current_user
if @user.valid_password?(params[:user][:old_password])
if @user.update_attributes(params[:user].reject{|key, value| key == "old_password"})
flash[:notice] = 'Successfully updated profile.'
redirect_back_or_default root_url
else
render :action => 'edit'
end
else
flash[:warning] = 'Your old password is WRONG! What is your malfunction!?!'
render :action => 'edit'
end
end

(您可能想要更改警告...)

关于ruby-on-rails - 使用 Authlogic 时如何编写和测试密码更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2231524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com