获取Sitefinitys生成的密码重置URL

时间:2018-04-04 12:34:49

标签: sitefinity

我正在尝试从密码重置中获取URL,这是我通过sitefinity前端登录的电子邮件收到的。

我需要将包含在表单中输入的用户名的URL发送到服务器以发送电子邮件。

我已经尝试覆盖LoginFormModel的SendResetPasswordEmail,但只提供了重置所在的URL。 (本地主机/登录/ resetpassword)

看起来URL是在Telerik.Sitefinity.Security.UserManager的方法SendRecoveryPasswordMail中生成的,该方法不可覆盖。

有没有办法让生成的恢复网址在自定义方法中使用?

提前致谢

1 个答案:

答案 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。