在特定用例的应用程序中,我创建了一个新用户(以编程方式设置密码),并向他们发送确认电子邮件
我希望他们能够在确认后立即更改密码(无需输入我不想发送给他们的系统生成的密码)
实际上,我想要
1) 系统使用生成的密码创建新用户帐户。
2) 系统发送确认电子邮件。
3) 用户单击确认并被重定向以输入密码(有效地将其发送到如下URL)
<;a href=”http://localhost:3000/users/password/edit?reset_password_token=v5Q3oQGbsyqAUUxyqLtb“>;更改我的密码</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.rb和database\u authenticable.rb了解有关方法和好友的详细信息
如果您想使用designe:confirmable模块而不是此方法,请参阅designe wiki页面