Ejemplo n.º 1
0
        private async Task GuardarToken(LoginUserToken userinfo)
        {
            var          Fecha_Creacion   = DateTime.UtcNow;
            var          Fecha_Expiracion = Fecha_Creacion.AddDays(7);
            UsuarioToken guardartoken     = new UsuarioToken()
            {
                Fecha_Creacion   = Fecha_Creacion,
                Fecha_Expiracion = Fecha_Expiracion,
                Token            = userinfo.Token,
                UsuarioId        = userinfo.Id,
                Valido           = true
            };
            await _context.UsuariosTokens.AddAsync(guardartoken);

            await _context.SaveChangesAsync();
        }
Ejemplo n.º 2
0
        private async Task <LoginUserToken> CrearToken(Usuario usuario, string ReturnURL)
        {
            var tokenHandler = new JwtSecurityTokenHandler();                                 // instancia de configuracion de; jwt
            var key          = Encoding.ASCII.GetBytes(_configuration["SecretTokenKey:Key"]); // clave ultra secreta encriptadora

            var userClaims = await _userManager.GetClaimsAsync(usuario);                      // claims del usuario

            var roles = await _userManager.GetRolesAsync(usuario);                            // roles del usuario

            var roleClaims = new List <Claim>();                                              // intancia para convertir los roles en claims

            for (int i = 0; i < roles.Count; i++)                                             // asignamos cada rol a un claim
            {
                roleClaims.Add(new Claim(ClaimTypes.Role, roles[i]));
            }

            var claims = new List <Claim>()
            {
                new Claim(ClaimTypes.Name, usuario.Id.ToString())
            }.Concat(roleClaims).Concat(userClaims).ToList();

            var tokenDescriptor = new SecurityTokenDescriptor                                                                      // intancia con la informacion del hwt
            {
                Subject            = new ClaimsIdentity(claims),                                                                   // asignamos la lista con todos los claims del usuario
                Expires            = DateTime.UtcNow.AddDays(7),                                                                   // agregamos un vida util del token
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) // ponemos nuestra super clave encriptadora
            };

            var tokenString = "";

            do
            {
                var token = tokenHandler.CreateToken(tokenDescriptor); // creacion del token
                tokenString = tokenHandler.WriteToken(token);          // serializacion del token
            } while (await _context.UsuariosTokens.AnyAsync(ut => ut.Token.Equals(tokenString)));

            LoginUserToken userinfo = new LoginUserToken() // instancia con la informacion que regresara en el login
            {
                Email     = usuario.Email,
                Id        = usuario.Id,
                Name      = usuario.UserName,
                ReturnURL = ReturnURL,
                Token     = tokenString
            };

            return(userinfo);
        }