public async Task <IActionResult> Login(LoginViewModel args, string returnUrl) { //ViewData["ReturnUrl"] = returnUrl; if (!ModelState.IsValid) { return(View(args)); } try { var usuario = await oUsuario.LogIn(args); var persona = await oUsuario.GetPersonaByPrimary(usuario.idPersona); if (usuario != null) { //Guardar Session en Cookie var lista = new List <Estado>(); var claims = new List <Claim>() { new Claim("idUsuario", usuario.idUsuario.ToString()), new Claim("idRol", usuario.idRol.ToString()), new Claim("idPersona", persona.idPersona.ToString()), new Claim("idTipoPersona", persona.idTipoPersona.ToString()), new Claim(ClaimTypes.Name, $"{persona.nombrePersona} {persona.apellidoPersona}") }; var userIdentity = new ClaimsIdentity(claims, "login"); ClaimsPrincipal principal = new ClaimsPrincipal(userIdentity); await HttpContext.SignInAsync(principal); return(RedirectToAction("Index", "Ticket")); } } catch (Exception e) { ModelState.AddModelError("", "Usuario o clave invalido!"); } return(View(args)); }