如何验证用户';根据MVC.NET中AspNetUsers表中的哈希值设置的密码

本文关键字:密码 NET MVC AspNetUsers 哈希值 根据 设置 何验证 验证 用户 | 更新日期: 2023-09-27 18:29:22

我收到两个字符串:用户名和密码,基于此,我检索AspNetUser的实例,该实例具有相应的字段。我想生成相应的Id,但前提是名称和通行证签出。前者很简单,因为它是纯文本的。

给定提供的密码,我如何验证哈希值是否正确?

我已经看了几个小时默认模板中的代码,但我无法理解它。基于这个页面,我创建了自己的HASHE,但我得到的与数据库中的不同,所以我猜我做错了,或者他们在哈希之前添加了一些神奇的部分。

我的:E8B9C259EAB04BBB67B2D67AF745B
数据库:AFczTgO67ViTWwZNejEiTyKRg5s96x5mOmwFFBj7yRUpys/5duOw0q6I6imCm1t1hQ==

看到上面,你能发现区别吗。。。?使用的密码是"Abc123()",以备不时之需。

当我尝试使用MD5CryptoServiceProvider时,我是不是找错树了?在计算哈希之前,是否有一个默认字符串被插入到源中?

如果有关于最佳实践的意见,我当然愿意接受。然而,请记住,安全问题是我的弱点,已经困扰了我很长一段时间,所以这是我想深入了解这个概念的方式。如果可能的话,那就是

我可以选择使用MS为我提供的设施,但我还没有做到这一点。在我看来,这就像很多代码在做"这里有东西,那里有东西"。

<system.web>
  <membership defaultProvider="donkey">
    <providers >
      <clear/>
      <add name="donkey" passwordFormat="Hashed" />
    </providers>
  </membership>
  <authentication mode="None" />
  <compilation debug="true" targetFramework="4.5.2" />
  <customErrors mode="Off"></customErrors>
  <httpRuntime targetFramework="4.5.2" />
</system.web>

如何验证用户';根据MVC.NET中AspNetUsers表中的哈希值设置的密码

您使用的Membership类提供静态ValidateUser方法:

验证提供的用户名和密码是否有效。

public static bool ValidateUser(
  string username,
  string password
)

public void Login_OnClick(object sender, EventArgs args)
{
   if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
      FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
   else
     Msg.Text = "Login failed. Please check your user name and password and try again.";
}