当前位置: 首页 > 知识库问答 >
问题:

ASP。网络身份重置密码

子车新立
2023-03-14

如何获取新ASP中用户的密码。网络身份识别系统?或者如何在不知道当前密码(用户忘记密码)的情况下重置?

共有3个答案

赫连瑾瑜
2023-03-14

这是最初的回答。它确实工作,但有一个问题。如果addPassword失败怎么办?用户没有密码。

原始答案:我们可以使用三行代码:

UserManager<IdentityUser> userManager = 
    new UserManager<IdentityUser>(new UserStore<IdentityUser>());

userManager.RemovePassword(userId);

userManager.AddPassword(userId, newPassword);

另见:http://msdn.microsoft.com/en-us/library/dn457095(v=vs.111)。aspx

最好使用EdwardBrey提出的答案,然后DanielWright用一个代码示例详细阐述了这个答案。

熊哲圣
2023-03-14

在当前版本中

假设您已经处理了重置忘记密码请求的验证,请使用以下代码作为示例代码步骤。

ApplicationDbContext =new ApplicationDbContext()
String userId = "<YourLogicAssignsRequestedUserId>";
String newPassword = "<PasswordAsTypedByUser>";
ApplicationUser cUser = UserManager.FindById(userId);
String hashedNewPassword = UserManager.PasswordHasher.HashPassword(newPassword);
UserStore<ApplicationUser> store = new UserStore<ApplicationUser>();            
store.SetPasswordHashAsync(cUser, hashedNewPassword);

在AspNet夜间构建

该框架被更新为与令牌一起处理像忘记密码这样的请求。一旦发布,就需要简单的代码指导。

更新:

这次更新只是为了提供更明确的步骤。

ApplicationDbContext context = new ApplicationDbContext();
UserStore<ApplicationUser> store = new UserStore<ApplicationUser>(context);
UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(store);
String userId = User.Identity.GetUserId();//"<YourLogicAssignsRequestedUserId>";
String newPassword = "test@123"; //"<PasswordAsTypedByUser>";
String hashedNewPassword = UserManager.PasswordHasher.HashPassword(newPassword);                    
ApplicationUser cUser = await store.FindByIdAsync(userId);
await store.SetPasswordHashAsync(cUser, hashedNewPassword);
await store.UpdateAsync(cUser);
长孙明知
2023-03-14

或者我如何在不知道当前密码的情况下重置(用户忘记密码)?

如果要使用UserManager更改密码,但不想提供用户的当前密码,可以生成密码重置令牌,然后立即使用它。

string resetToken = await UserManager.GeneratePasswordResetTokenAsync(model.Id);
IdentityResult passwordChangeResult = await UserManager.ResetPasswordAsync(model.Id, resetToken, model.NewPassword);
 类似资料:
  • 我们刚刚启动了我们的ASP。NETMVC(使用Identity 2.0)web应用程序6天前已经有超过5000人注册了帐户,太棒了! 问题是3-5%点击确认电子邮件链接的用户(似乎也是重置密码)会出现错误屏幕,大概是因为他们有一个无效的令牌。 我在StackOverflow上读到,您需要对url进行编码,以避免特殊字符将其丢弃,然后在验证之前对其进行解码。不过,我这样做没有效果,一些用户仍然在他们

  • 我写的是MVC5,使用的是Identity 2.0。 我在邮件中点击链接,我正在获得密码重置令牌并使用 结果总是false,并表示“无效令牌”。我该在哪里修?

  • 我只是在我的项目中添加了MVC 5的“忘记密码”部分,在收到邮件后我无法更改密码。 错误:在应用程序中= 在Visual Studio中= 错误来源代码: 我在stackoverflow和其他方面尝试了很多东西,但都没有成功。 如果你知道我为什么会出现这个错误:) 我使用在创建ASP时提出的基本模板。NET web app。我可以上传你想要的所有代码文件,只要问你需要什么帮助我,我会在2分钟内上传

  • 我正在ASP. NET中实现自己的重置密码。在重置密码中,首先我创建一个随机字符串并将其邮寄到用户电子邮件。对于电子邮件中的链接,如http://xyz.com/account/forgot?random=xxxx

  • 一些相关问题:Webforms ASP。NET Identity system重置密码 我试图使用身份系统实现密码恢复,但遇到了错误(商店没有实现IUserEmailStore)。下面是我正在做的,我正在使用Visual Studio 2013 Web。使用Web表单(MVC学习进行中),用户注册他们的电子邮件,并存储在数据库的用户名字段中。我在IdentityModel中添加了UserManag

  • 我正在用java编写一个必须在我的工作环境中运行的程序。这是我的代码片段: 在我的家庭网络上,这工作得非常好,但在商业网络上,我会遇到以下错误: onnection.getSocketException:软件导致连接中止:recv在java.net.SocketInputSonquerer.runRead0(本机方法)在onquerer.java:44SocketInputStream.read(