我正在尝试从密码重置中获取URL,这是我通过sitefinity前端登录的电子邮件收到的。
我需要将包含在表单中输入的用户名的URL发送到服务器以发送电子邮件。
我已经尝试覆盖LoginFormModel的SendResetPasswordEmail,但只提供了重置所在的URL。 (本地主机/登录/ resetpassword)
看起来URL是在Telerik.Sitefinity.Security.UserManager的方法SendRecoveryPasswordMail中生成的,该方法不可覆盖。
有没有办法让生成的恢复网址在自定义方法中使用?
提前致谢
答案 0 :(得分:0)
由于您已经拥有重置密码页面的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。