【问题标题】:How to implement "forgot password" using Warden?如何使用 Warden 实现“忘记密码”?
【发布时间】:2015-04-14 05:51:16
【问题描述】:

在从Devise切换到直接使用Warden的过程中。

我怎样才能实现 Devise 开箱即用的“忘记密码”功能?

有什么宝石可以把它加到守望者身上吗?

附言。不使用 Devise 的原因是需要进行一些自定义,这使得破解 Devise 使其工作不值得。

【问题讨论】:

    标签: ruby-on-rails ruby warden


    【解决方案1】:

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

    一步一步:

    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

    【讨论】:

      猜你喜欢
      • 2016-09-13
      • 2018-11-11
      • 2017-07-06
      • 1970-01-01
      • 2018-01-20
      • 2018-07-07
      • 1970-01-01
      • 2011-07-26
      • 2019-12-07
      相关资源
      最近更新 更多