获取 Sitefinitys 生成的密码重置 URL
Get Sitefinitys Generated Password Reset URL
我正在尝试从我通过 sitefinity 前端登录电子邮件收到的密码重置中获取 URL。
我需要将 URL 和在表单中输入的用户名发送到服务器以发送电子邮件。
我已经尝试覆盖 LoginFormModel 的 SendResetPasswordEmail,但这只会给我重置所在的 URL。 (localhost/login/resetpassword)
看起来 URL 是在 Telerik.Sitefinity.Security.UserManager 的 SendRecoveryPasswordMail 方法中生成的,这是不可覆盖的。
有没有办法让生成的恢复 URL 在自定义方法中使用它?
提前致谢
由于您已经有了重设密码页面的 URL,我猜您的问题是获取正确的查询字符串以传递到该页面。
用JustDecompile查看源码,查询字符串是这样组成的:
?vk=userValidationKeyEncoded&cp=pr
cp=pr好像是硬编码的,所以我们保持原样,问题是userValidationKeyEncoded是如何制作的。
再次查看代码,是这一行:
string userValidationKeyEncoded = UserManager.GetUserValidationKeyEncoded(userByEmail);
最后:
private static string GetUserValidationKeyEncoded(User user)
{
object[] providerName = new object[] { user.ProviderName, ',', user.Id, ',', DateTime.UtcNow };
string str = string.Format("{0}{1}{2}{3}{4}", providerName);
return SecurityManager.EncryptData(str).UrlEncode();
}
您可以使用上面的代码手动生成validationKey。
我正在尝试从我通过 sitefinity 前端登录电子邮件收到的密码重置中获取 URL。
我需要将 URL 和在表单中输入的用户名发送到服务器以发送电子邮件。
我已经尝试覆盖 LoginFormModel 的 SendResetPasswordEmail,但这只会给我重置所在的 URL。 (localhost/login/resetpassword)
看起来 URL 是在 Telerik.Sitefinity.Security.UserManager 的 SendRecoveryPasswordMail 方法中生成的,这是不可覆盖的。
有没有办法让生成的恢复 URL 在自定义方法中使用它?
提前致谢
由于您已经有了重设密码页面的 URL,我猜您的问题是获取正确的查询字符串以传递到该页面。
用JustDecompile查看源码,查询字符串是这样组成的:
?vk=userValidationKeyEncoded&cp=pr
cp=pr好像是硬编码的,所以我们保持原样,问题是userValidationKeyEncoded是如何制作的。
再次查看代码,是这一行:
string userValidationKeyEncoded = UserManager.GetUserValidationKeyEncoded(userByEmail);
最后:
private static string GetUserValidationKeyEncoded(User user)
{
object[] providerName = new object[] { user.ProviderName, ',', user.Id, ',', DateTime.UtcNow };
string str = string.Format("{0}{1}{2}{3}{4}", providerName);
return SecurityManager.EncryptData(str).UrlEncode();
}
您可以使用上面的代码手动生成validationKey。