如何实施"忘记密码"使用守望者?

时间:2015-04-14 05:51:17

标签: ruby-on-rails ruby warden

在从Devise切换到直接使用Warden

的过程中

如何实现Devise开箱即用的“忘记密码”功能?

是否有宝石可以将其添加到Warden?

PS。不使用Devise的原因是因为需要进行一些定制,这使得黑客设计使得它不值得工作。

1 个答案:

答案 0 :(得分:2)

我不知道是否有宝石,但自己动手并不需要很长时间。假设每个帐户都附有一封电子邮件。忘记密码按钮,链接到用户将在其中输入用户名或用户特有的任何信息以及用户提交表单后的页面。发送新密码到那里发送电子邮件。

步骤一步:

  1. 在登录页面上创建一个忘记密码按钮,以链接到新的忘记密码页面。
  2. 为这个新的忘记密码页面制作路由,控制器操作。
  3. 在忘记密码页面上创建一个表单,其中包含有关用户的唯一信息。恩。用户名。此表单将是对控制器中某个操作的发布请求,该操作会将新密码通过电子邮件发送给拥有此用户名的用户。

    这是我的一个看起来像:

    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
    
  4. 制作邮件。如果您不了解,本指南将介绍其完成方式。 Mailers in Rails