Rails设计:设置密码重置令牌并重定向用户

在特定用例的应用程序中,我创建了一个新用户(以编程方式设置密码),并向他们发送确认电子邮件

我希望他们能够在确认后立即更改密码(无需输入我不想发送给他们的系统生成的密码)

实际上,我想要
1) 系统使用生成的密码创建新用户帐户。
2) 系统发送确认电子邮件。
3) 用户单击确认并被重定向以输入密码(有效地将其发送到如下URL)

<a href=”http://localhost:3000/users/password/edit?reset_password_token=v5Q3oQGbsyqAUUxyqLtb“>更改我的密码&lt/a>

任何帮助/指点都很好

一个简单的方法,只有一个步骤,用户确认电子邮件地址和设置初始密码使用的链接,你建议

发送一个你的应用程序生成的电子邮件,包括一个ReSeTyPaseWordBy令牌,并考虑用户拥有该电子邮件地址有效性的令牌确认。

在系统帐户生成代码中,假设用户模型设置为:可恢复和:数据库可验证设计模块

acct=User.new
acct.password=User.reset_password#令牌#实际上不会被使用。。。
acct.reset\u password\u token=User.reset\u password\u token
acct.email=”[email protected]“#假设用户会认同此字段
#设置您可能需要的其他帐户字段
帐户保存

当用户设置初始密码时,使Desive reset password视图更清晰

查看/设计/密码/edit.html.erb

。。。
<%=“true”==参数[:初始值]?“设置密码”:“重置密码”%>
...  

生成的电子邮件

Hi<%[email protected]%>
已为您生成一个帐户。
请访问www.oursite.com/users/password/edit?initial=true&重置密码\u令牌=<%[email protected]\u密码\u令牌%>设置您的密码。

无需在您的用户模型中包括:confirmable designe模块,因为如果没有电子邮件中的重置密码令牌,您的应用程序创建的帐户将无法访问

Desive将处理提交并清除重置密码令牌字段

请参见designe\u gem\u folder/lib/designe/models/recoverable.rbdatabase\u authenticable.rb了解有关方法和好友的详细信息

如果您想使用designe:confirmable模块而不是此方法,请参阅designe wiki页面

发表评论