我正在创建一个简单的应用程序,我已经在注册时创建了密码的哈希值,但是无法在登录时应用哈希值。目前我无法使用散列密码的新用户登录。任何帮助将非常感激。目前我有:(注册)
public String HashPassword(String password)
{
var combinedPassword = String.Concat(password);
var sha256 = new SHA256Managed();
var bytes = UTF8Encoding.UTF8.GetBytes(combinedPassword);
var hash = sha256.ComputeHash(bytes);
return Convert.ToBase64String(hash);
}
public void AddUserAccount(UserSignUpView user)
{
using (DemoDBEntities db = new DemoDBEntities())
{
SYSUser SU = new SYSUser();
SU.PasswordEncryptedText = HashPassword(user.Password);
SU.LoginName = user.LoginName;
SU.RowCreatedSYSUserID = user.SYSUserID > 0 ?
user.SYSUserID : 1;
SU.RowModifiedSYSUserID = user.SYSUserID > 0 ?
user.SYSUserID : 1; ;
SU.RowCreatedDateTime = DateTime.Now;
SU.RowMOdifiedDateTime = DateTime.Now;
db.SYSUsers.Add(SU);
db.SaveChanges();
这一切都可以正常注册和散列。这就是我登录的内容:
public Boolean ValidatePassword(String enteredPassword, String storedHash)
{
var hasher = HashPassword(enteredPassword);
return String.Equals(storedHash, hasher);
}
public string GetUserPassword(string enteredPassword)
{
using (DemoDBEntities db = new DemoDBEntities())
{
var hash = HashPassword(enteredPassword);
var user = db.SYSUsers.Where(o =>
o.PasswordEncryptedText.Equals(enteredPassword));
if (user.Any())
return user.FirstOrDefault().PasswordEncryptedText;
else
return string.Empty;
}
}
在控制器中我有:
public ActionResult LogIn(UserLoginView ULV, string returnUrl)
{
if (ModelState.IsValid)
{
UserManager UM = new UserManager();
string password = UM.GetUserName(ULV.LoginName);
string hash = UM.GetUserPassword(ULV.Password);
//var password = ComputeHash(password, new SHA256CryptoServiceProvider());
if (string.IsNullOrEmpty(hash))
ModelState.AddModelError("", "The user login or password provided is incorrect.");
else {
if (ULV.Password.Equals(hash)&&(ULV.LoginName.Equals(password)))
{
FormsAuthentication.SetAuthCookie(ULV.LoginName, false);
return RedirectToAction("Welcome", "Home");
}
else {
ModelState.AddModelError("", "The password provided is incorrect.");
}
}
}
答案 0 :(得分:0)
您似乎从数据库中使用行string hash = UM.GetUserPassword(ULV.Password);
获取哈希密码,然后将其与使用此行ULV.Password.Equals(hash)
输入的值进行比较。由于一个是哈希,而另一个不是,它们永远不会是平等的。
答案 1 :(得分:0)
这有效:
df$months <- month(df$x)