获取 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。