在特定用例的应用程序中,我创建了一个新用户(通过编程设置密码),并向他们发送确认邮箱.
我希望他们能够在确认后立即更改密码(无需输入我不想发送给他们的系统生成的密码)
实际上,我想要
<a href="http://localhost:3000/users/password/edit?reset_password_token=v5Q3oQGbsyqAUUxyqLtb">Change my password</a>
任何帮助/指点都很好.
在特定用例的应用程序中,我创建了一个新用户(通过编程设置密码),并向他们发送确认邮箱.
我希望他们能够在确认后立即更改密码(无需输入我不想发送给他们的系统生成的密码)
实际上,我想要
<a href="http://localhost:3000/users/password/edit?reset_password_token=v5Q3oQGbsyqAUUxyqLtb">Change my password</a>
任何帮助/指点都很好.
这是一个简单的方法,用户只需一步就可以确认邮箱地址,并使用您建议的链接设置初始密码...
发送一个你的应用程序生成的邮箱,包括一个ReSeTyPaseWordBy令牌,并考虑用户拥有该邮箱地址有效性的令牌确认.
在系统帐户生成代码中,假设用户模型设置为:可恢复和:数据库可验证设计模块...
acct = User.new
acct.password = User.reset_password_token #won't actually be used...
acct.reset_password_token = User.reset_password_token
acct.email = "user@usercompany.com" #assuming users will identify themselves with this field
#set other acct fields you may need
acct.save
当用户设置初始密码时,让Desive reset password视图更清晰.
...
<%= "true" == params[:initial] ? "Set your password" : "Reset your password" %>
...
Hi <%= @user.name %>
An account has been generated for you.
Please visit www.oursite.com/users/password/edit?initial=true&reset_password_token=<%= @user.reset_password_token %> to set your password.
无需在您的用户模型中包含:confirmable designe模块,因为如果没有邮箱中的重置密码令牌,您的应用程序创建的帐户将无法访问.
Desive将处理提交并清除reset_password_token字段.
有关reset_password_token
方法和朋友的详细信息,请参见devise_gem_folder/lib/devise/models/recoverable.rb
和database_authenticatable.rb
.
如果您想使用Desive :confirmable
模块而不是这种方法,请参阅Devise wiki page.