public async Task <IActionResult> Login(UsuariLoginDTO usuario) { UsuariInfoDTO _userInfo = await AutenticarUsuarioAsync(usuario.Email, usuario.Pass); if (_userInfo != null) { return(Ok(new { token = GenerarTokenJWT(_userInfo) })); } else { return(Unauthorized()); } }
/// <summary> /// Genear el token con la informacion del usuario /// </summary> /// <param name="usuarioInfo">Información del usuario</param> /// <returns></returns> private string GenerarTokenJWT(UsuariInfoDTO usuarioInfo) { // CREAMOS EL HEADER // string secretKey = _configuration["JWT:SecretKey"]; var _symmetricSecurityKey = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(secretKey) ); var _signingCredentials = new SigningCredentials( _symmetricSecurityKey, SecurityAlgorithms.HmacSha256 ); var _Header = new JwtHeader(_signingCredentials); // CREAMOS LOS CLAIMS // var _Claims = new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(JwtRegisteredClaimNames.NameId, usuarioInfo.Id.ToString()), new Claim(JwtRegisteredClaimNames.Email, usuarioInfo.Email), new Claim(ClaimTypes.Role, usuarioInfo.Rol) }; // CREAMOS EL PAYLOAD // var _Payload = new JwtPayload( issuer: _configuration["JWT:Issuer"], audience: _configuration["JWT:Audience"], claims: _Claims, notBefore: DateTime.Now, expires: DateTime.Now.AddHours(int.Parse(_configuration["JWT:Expire"])) ); // GENERAMOS EL TOKEN // var _Token = new JwtSecurityToken( _Header, _Payload ); return(new JwtSecurityTokenHandler().WriteToken(_Token)); }