【发布时间】:2015-04-14 05:51:16
【问题描述】:
在从Devise切换到直接使用Warden的过程中。
我怎样才能实现 Devise 开箱即用的“忘记密码”功能?
有什么宝石可以把它加到守望者身上吗?
附言。不使用 Devise 的原因是需要进行一些自定义,这使得破解 Devise 使其工作不值得。
【问题讨论】:
标签: ruby-on-rails ruby warden
在从Devise切换到直接使用Warden的过程中。
我怎样才能实现 Devise 开箱即用的“忘记密码”功能?
有什么宝石可以把它加到守望者身上吗?
附言。不使用 Devise 的原因是需要进行一些自定义,这使得破解 Devise 使其工作不值得。
【问题讨论】:
标签: ruby-on-rails ruby warden
我不知道是否有宝石,但自己动手并不需要很长时间。假设每个帐户都附加了一封电子邮件。有一个忘记密码按钮,该按钮链接到用户将在那里输入用户名或用户唯一的任何信息的页面,并且一旦用户提交表单。将新密码发送到那里的电子邮件。
一步一步:
在忘记密码页面上制作一个表单,其中包含有关用户的唯一信息。前任。用户名。此表单将是对控制器中操作的发布请求,该操作将通过电子邮件将新密码发送给具有此用户名的用户。
这是我的一个样子:
def emailor
@user = User.find_by username: params[:user][:username]
random_password = Array.new(10).map { (65 + rand(58)).chr }.join
@user.password = random_password
if @user.save
UserMailer.reset_password_email(@user.email, random_password ).deliver
flash[:notice] = "Email has been sent";
redirect_to root_path
end
end
制作您的邮件。如果您不知道,本指南将介绍它是如何完成的。 Mailers in Rails
【讨论】: