从Devise切换到直接使用Warden的过程中.
如何实现 Devise 开箱即用的“忘记密码”功能?
是否有 gem 可以将其添加到守望者身上?
PS。不使用 Devise 的原因是因为需要进行一些自定义,这使得破解 Devise 使其工作不值得。最佳答案
我不知道是否有 gem ,但自己做并不需要太长时间。假设每个帐户都附有一封电子邮件。有一个忘记密码按钮,该按钮链接到一个页面,一旦用户提交表单,用户将在该页面上输入用户名或用户独有的任何信息。将新密码发送到该电子邮件。
一步一步:
- 在登录页面上创建一个忘记密码按钮,以链接到新的忘记密码页面。
- 为这个新的忘记密码页面制定路线、 Controller 操作。
在忘记密码页面上创建一个表单,其中包含有关用户的独特信息。前任。用户名。该表单将是对 Controller 中某个操作的发布请求,该操作将通过电子邮件将新密码发送给拥有此用户名的用户。
这就是我的一个的样子:
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
关于ruby-on-rails - 如何使用Warden实现 "forgot password"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29620039/