如何使用 Warden 实现 "forgot password"?
How to implement "forgot password" using Warden?
从Devise切换到直接使用的过程中Warden。
我如何着手实施 Devise 开箱即用的 "forgot password" 功能?
是否有 gem 可以将其添加到 Warden 中?
PS。不使用 Devise 的原因是因为需要进行一些定制,这使得破解 Devise 使其工作变得不值得。
不知道有没有gem,不过自己做也不会花太长时间。假设每个帐户都有一个电子邮件附加到它。有一个忘记密码按钮 link 到一个页面,用户将在该页面输入用户名或用户独有的任何信息,一旦用户提交表单。将新密码发送到那里的电子邮件。
一步一步:
- 在您的登录页面上创建一个忘记密码按钮 link 到一个新的忘记密码页面。
- 为这个新的忘记密码页面创建路由、控制器操作。
在忘记密码页面上制作一个表格,其中包含有关用户的唯一信息。前任。用户名。此表单将是一个 post 对您控制器中的操作的请求,该操作将通过电子邮件将新密码发送给具有此用户名的用户。
这是我的一个的样子:
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
从Devise切换到直接使用的过程中Warden。
我如何着手实施 Devise 开箱即用的 "forgot password" 功能?
是否有 gem 可以将其添加到 Warden 中?
PS。不使用 Devise 的原因是因为需要进行一些定制,这使得破解 Devise 使其工作变得不值得。
不知道有没有gem,不过自己做也不会花太长时间。假设每个帐户都有一个电子邮件附加到它。有一个忘记密码按钮 link 到一个页面,用户将在该页面输入用户名或用户独有的任何信息,一旦用户提交表单。将新密码发送到那里的电子邮件。
一步一步:
- 在您的登录页面上创建一个忘记密码按钮 link 到一个新的忘记密码页面。
- 为这个新的忘记密码页面创建路由、控制器操作。
在忘记密码页面上制作一个表格,其中包含有关用户的唯一信息。前任。用户名。此表单将是一个 post 对您控制器中的操作的请求,该操作将通过电子邮件将新密码发送给具有此用户名的用户。
这是我的一个的样子:
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