验证asp.net中的密码

时间:2012-01-14 17:11:31

标签: c# asp.net .net security

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

问题是在代码中我无法获取密码,因为它是经过哈希处理的;加密时会发生同样的情况。因此,我无法将其与用户提供的当前密码进行比较(我需要将密码保存在服务器上进行哈希处理或加密。)

这是代码的一部分:

string pass = user.GetPassword("myAnswer");

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

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

2 个答案:

答案 0 :(得分:4)

会员提供商通过提供验证散列密码的方法来处理您的问题:

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

答案 1 :(得分:0)

正确的方法是散列传入的用户密码,从数据库中检索正确的散列并比较散列,而不是打开的密码。