在asp.net中验证密码

本文关键字:验证 密码 net asp | 更新日期: 2023-09-27 18:20:13

我正在使用SqlMembershipProvider,登录完成后,我会尝试检查密码是否错误,并给出相应的消息。

问题是,在代码中,我无法获得密码,因为它是散列的;当它被加密时也会发生同样的情况。所以,我无法将其与用户提供的当前密码进行比较(我需要将服务器上的密码进行哈希或加密。)

这是代码的一部分:

string pass = user.GetPassword("myAnswer");
if (!pass.ToUpper().Equals(Login1.Password.ToUpper()))
{
   Login1.FailureText = "Password is wrong !";
}

那么,我应该在SqlMembershipProvider中将密码设置为clear,然后实现我自己的加密密码机制吗?这是正确的路吗?我认为SqlMembershipProvider框架应该以某种方式处理这种情况。

在asp.net中验证密码

会员资格提供商通过提供一种验证哈希密码的方法来处理您的问题:

if ( Membership.ValidateUser( txtUserName.Text, txtPassword.Text ) )
{
}

正确的方法是对传入的用户密码进行散列,从DB中检索正确的散列并比较散列,而不是打开的密码。