Я пытаюсь создать форму регистрации в ASP.net, используя Entity Framework. Регистрация работает нормально, не пытаясь хэшировать данные, но когда я пытаюсь хэшировать данные, я получаю следующую ошибку: «EntityValidationErrors».
Классы шифрования
public class Encrypt
{
public static string GetMD5Hash(string input)
{
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()) {
byte[] b = System.Text.Encoding.UTF8.GetBytes(input);
b = md5.ComputeHash(b);
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (byte x in b)
{
sb.Append(x.ToString("x2"));
}
return sb.ToString();
}
}
}
И
public class CustomPasswordHasher : IPasswordHasher
{
public string HashPassword(string password)
{
return Encrypt.GetMD5Hash(password);
}
public PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword)
{
if (hashedPassword == HashPassword(providedPassword))
{
return PasswordVerificationResult.Success;
}
else
{
return PasswordVerificationResult.Failed;
}
}
}
Метод, в котором я пытаюсь зашифровать свои данные
[HttpPost]
public ActionResult Register(CustomUser user)
{
CustomPasswordHasher cph = new CustomPasswordHasher();
var hashedpw = cph.HashPassword(user.Password);
user.Password = hashedpw;
using (DBModelEntities dbModel = new DBModelEntities())
{
if (dbModel.CustomUsers.Any(x => x.Email == user.Email))
{
ViewBag.DuplicateMessage = "Email already in use";
return View("Register", user);
}
dbModel.CustomUsers.Add(user);
dbModel.SaveChanges();
}
ModelState.Clear();
ViewBag.SuccesMessage = "Succes";
return View("Register", new customUser());
}
И мой класс CustomUserModel
public partial class CustomUser
{
public int UserID { get; set; }
[Required(ErrorMessage = "Verplicht")]
public string Email { get; set; }
[Required(ErrorMessage = "Verplicht")]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required(ErrorMessage = "Verplicht")]
[DataType(DataType.Password)]
[DisplayName("Confirm password")]
[Compare("Password")]
public string ConfirmPassword { get; set; }
public string LoginErrorMessage { get; set; }
}
Надеюсь, кто-нибудь поможет мне разобраться!
Заранее спасибо!