我正在使用SqlMembershipProvider,当登录完成后,我正在尝试检查密码是否错误并给出相应的消息。
问题是在代码中我无法获取密码,因为它是经过哈希处理的;加密时会发生同样的情况。因此,我无法将其与用户提供的当前密码进行比较(我需要将密码保存在服务器上进行哈希处理或加密。)
这是代码的一部分:
string pass = user.GetPassword("myAnswer");
if (!pass.ToUpper().Equals(Login1.Password.ToUpper()))
{
Login1.FailureText = "Password is wrong !";
}
那么,我应该在SqlMembershipProvider中将密码设置为clear,然后实现我自己的加密密码机制吗?这是正确的方法吗?我在想SqlMembershipProvider框架应该以某种方式处理这种情况。
答案 0 :(得分:4)
会员提供商通过提供验证散列密码的方法来处理您的问题:
if ( Membership.ValidateUser( txtUserName.Text, txtPassword.Text ) )
{
}
答案 1 :(得分:0)
正确的方法是散列传入的用户密码,从数据库中检索正确的散列并比较散列,而不是打开的密码。