Dav*_*ide 3 authentication asp.net-mvc-4 simplemembership
我正在使用ASP.NET MVC 4 Web应用程序,我正在尝试忘记密码页面.在我的POST中,我检查与密码相关的用户是否存在
WebSecurity.UserExists(email)
Run Code Online (Sandbox Code Playgroud)
并且它返回true,但是当我exectue
WebSecurity.GeneratePasswordResetToken(email, 10);
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
No account exists for *email*
Run Code Online (Sandbox Code Playgroud)
作为参考,我正在学习本教程:http://www.thecodingguys.net/tutorials/asp/webpages-membership-forgot-password-and-reset-password.
有任何想法吗?
如果用户没有得到确认,也会抛出同样的错误。我花了一段时间才找出来,所以这可能会对某人有所帮助。也许有人有更好的方法来做这件事,因为这有点 hacky。
在我的情况下,客户端希望通过邮件向用户发送密码(我知道....),如果需要重新发送邮件,则必须生成一个新密码。
private string ChangePasswordForNotConfirmedUser(string emailAdress)
{
var membership = _membershipRepository.GetByUserName(emailAdress);
membership.IsConfirmed = true;
_membershipRepository.Save(membership);
var token = WebSecurity.GeneratePasswordResetToken(emailAdress);
var password = Membership.GeneratePassword(GlobalSettings.PasswordLenght, GlobalSettings.PasswordNoAlphaChars);
WebSecurity.ResetPassword(token, password);
membership.IsConfirmed = false;
_membershipRepository.Save(membership);
return password;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这解决了我的问题而没有考虑任何其他事情.
try
{
token = WebSecurity.GeneratePasswordResetToken(username);
}
catch (Exception ex)
{
if (ex.Message.Contains("No account"))
{
string password = System.Web.Security.Membership.GeneratePassword(6, 0);
WebSecurity.CreateAccount(username, password);
}
token = WebSecurity.GeneratePasswordResetToken(username);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3886 次 |
最近记录: |