hola a todos estoy creando un sistema en mvc asp.net c# en el cual la contraseña debe ser encriptada para que en la base de datos no se muestre como tal la contraseña la base de datos que ando usando es sql server, pero ya hice la parte de encriptación y cuando creo un nuevo usuario y le doy su contraseña en la base de datos ya me encripta esa contraseña, pero al momento de iniciar sesión me arroja un error de que 'Referencia a objeto no establecida como instancia de un objeto.' user fue full y esto es lo que llevo al momento:
este es el login que estoy haciendo
[HttpPost]
public ActionResult Login(string usuario, string contraseña)
{
if (!string.IsNullOrEmpty(usuario) && !string.IsNullOrEmpty(contraseña))
{
ReportesContex db = new ReportesContex();
var user = db.Usuarios.FirstOrDefault(e => e.numeroUsuario == usuario && e.contraseña == contraseña);
if (user.rol == "admin") {
FormsAuthentication.SetAuthCookie(user.rol, true);
Session["nombre"] = user.nombre;
Session["apellidos"] = user.apellidos;
return RedirectToAction("IndexAdmin", "Home");
}else
if (user.rol == "superAdmin")
{
FormsAuthentication.SetAuthCookie(user.rol, true);
Session["nombre"] = user.nombre;
Session["apellidos"] = user.apellidos;
return RedirectToAction("IndexSuperAdmin", "Home");
}
else
if (user.rol == "user")
{
FormsAuthentication.SetAuthCookie(user.rol, true);
Session["nombre"] = user.nombre;
Session["apellidos"] = user.apellidos;
return RedirectToAction("IndexUser", "Home");
}
else
if (user.rol == "controller")
{
FormsAuthentication.SetAuthCookie(user.rol, true);
Session["nombre"] = user.nombre;
Session["apellidos"] = user.apellidos;
return RedirectToAction("IndexController", "Home");
}
else
{
return RedirectToAction("Login", new { message = "No reconocemos tus datos" });
}
}
else
{
return RedirectToAction("Login", new { message = "Llena todos los campos para poder iniciar secion" });
}
}
y esto es lo que tengo en la encriptacion
public static string GetSHA256(string str)
{
SHA256 sha256 = SHA256Managed.Create();
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] stream = null;
StringBuilder sb = new StringBuilder();
stream = sha256.ComputeHash(encoding.GetBytes(str));
for (int i = 0; i < stream.Length; i++) sb.AppendFormat("{0:x2}", stream[i]);
return sb.ToString();
}