Я создал контроллер API, который сравнивает имя пользователя и пароль, которые я вводил, вместо имени пользователя и пароля (HASHED), которые сохраняются в моей базе данных.Как сравнить строковое значение с хэш-значением?
Моя проблема заключается в том, что мне действительно трудно сравнивать пароль, который я набрал, потому что пароль в моей базе данных находится в состоянии HASH. Очевидно, они будут иметь два разных значения. Как сравнить значение строки с значением хеша?
Если два пароля совпадают, он должен вернуть true, иначе false. Я сейчас нахожусь в замешательстве. Надеюсь, ты поможешь мне. Благодарю.
Это коды, которые я использовал.
LoginController.cs
namespace WebFormsDemo.Controllers
{
public class LoginController : ApiController
{
private EBMSEntities db = new EBMSEntities();
// GET: api/Login
[Route("api/Login/Search/{username}/{password}")]
[ResponseType(typeof(List<AspNetUser>))]
public bool getUserPassword(string username, string password)
{
var hashedPassword = "";
hashedPassword = Crypto.HashPassword(password);
var user = (from u in db.AspNetUsers
where u.UserName.Equals(username)
&& u.PasswordHash.Equals(hashedPassword)
select u).ToList();
if (user.Count() != 0)
{
return true;
}
return false;
}
}
}
Итак, что не так с кодом, который вы опубликовали? – sstan
@Rohit ранее я забыл о праве Crypto.HashPassword в моей хэш-функции . –
Вы должны взглянуть на Identity, который является аутентификацией на основе токенов - http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api –