public ResponsePackage <UsuarioDto> Authenticate(string email, string clave) { var responsePackage = new ResponsePackage <UsuarioDto>(); var user = _db.Usuario.SingleOrDefault(x => x.Email == email && x.Clave == clave); // return null if user not found if (user == null) { return(null); } // authentication successful so generate jwt token var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_appSettings.Secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, user.Id.ToString()) }), Expires = DateTime.UtcNow.AddDays(7), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var usuario = new UsuarioDto { Id = user.Id.ToString(), Nombre = user.Nombre, Apellido = user.Apellido, Email = user.Email, Clave = user.Clave, TipoDocumentoId = user.TipoDocumentoId.ToString(), NumeroDocumento = user.NumeroDocumento, RolId = user.RolId.ToString() }; var Role = _db.Rol.FirstOrDefault(r => r.Id == user.RolId); usuario.RolId = Role.Nombre; usuario.Token = tokenHandler.WriteToken(token); responsePackage.Message = ""; responsePackage.Result = usuario.WithoutPassword(); return(responsePackage); }