ruby-on-rails - 如何使用Warden实现 "forgot password"?

标签 ruby-on-rails ruby warden

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

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

是否有 gem 可以将其添加到守望者身上?

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

最佳答案

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

一步一步:

  1. 在登录页面上创建一个忘记密码按钮,以链接到新的忘记密码页面。
  2. 为这个新的忘记密码页面制定路线、 Controller 操作。
  3. 在忘记密码页面上创建一个表单,其中包含有关用户的独特信息。前任。用户名。该表单将是对 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
    
  4. 制作你的邮件。如果您不知道,本指南将介绍如何完成。 Mailers in Rails

关于ruby-on-rails - 如何使用Warden实现 "forgot password"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29620039/

相关文章:

ruby-on-rails - 设计忽略我的自定义策略

ruby-on-rails - counter_cache 与 has_many :through

ruby-on-rails - Elasticsearch + Tire不能忽略口音

ruby-on-rails - 更改资源路径

ruby - 为什么 YAML::Load 工作,但使用 require 的相对路径不工作

ruby - 根据键在第一个数组元素中附加字符串

ruby-on-rails-3 - 当我尝试通过 ajax 进行身份验证时,Warden 策略中的参数为空

ruby-on-rails - gem Warden,为什么我需要范围 : in login_as helper?

ruby-on-rails - PaperTrail : info_for_paper_trail outside the context of a controller

ruby-on-rails - jail 长认证返回401