Exemplo n.º 1
0
        private InicioSesionRespuesta GenerarTokenJwt(User login)
        {
            var llave        = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JWT:ClaveSecreta"]));
            var credenciales = new SigningCredentials(llave, SecurityAlgorithms.HmacSha256);
            var titulo       = new JwtHeader(credenciales);
            var info         = new[]
            {
                new Claim("nombre", login.firstName),
                new Claim("apellido", login.lastName),
                new Claim("email", login.email),
                new Claim(JwtRegisteredClaimNames.Email, login.email)
            };
            var cargaJwt = new JwtPayload(
                issuer: configuration["JWT:Isuser"],
                audience: configuration["JWT:Audience"],
                claims: info,
                notBefore: DateTime.UtcNow,
                expires: DateTime.UtcNow.AddHours(24)
                );
            var token = new JwtSecurityToken(titulo, cargaJwt);
            InicioSesionRespuesta inicioSesionRespuesta = new InicioSesionRespuesta();

            inicioSesionRespuesta.id        = login.id.ToString();
            inicioSesionRespuesta.firstName = login.firstName;
            inicioSesionRespuesta.lastName  = login.lastName;
            inicioSesionRespuesta.token     = new JwtSecurityTokenHandler().WriteToken(token);
            return(inicioSesionRespuesta);
        }
Exemplo n.º 2
0
        public async Task <ActionResult <InicioSesionRespuesta> > inicioDeSesion(InicioSesion inicioSesion)
        {
            InicioSesionRespuesta respuesta = null;

            try
            {
                var user = await this.userRepositorio.iniciarSesion(inicioSesion);

                if (user == null)
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, "Credenciales inválidas"));
                }

                respuesta = GenerarTokenJwt(user);

                this.Ok("Sesión iniciada correctamente");
            }
            catch (SqlException ex)
            {
                return(StatusCode(StatusCodes.Status303SeeOther, ex.Message));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }
            return(respuesta);
        }