예제 #1
0
        public IActionResult RefreshToken(string refToken)
        {
            if (!_service.CheckToken(refToken))
            {
                return(Ok("No such token"));
            }

            var newToken    = CreateToken();
            var newRefToken = Guid.NewGuid();

            _service.ChangeToken(refToken, newRefToken.ToString());

            return(Ok(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(newToken),
                refreshToken = newRefToken
            }));
        }
예제 #2
0
        public IActionResult RefreshToken(string refToken)
        {
            if (!_dbService.CheckToken(Guid.Parse(refToken)))
            {
                return(StatusCode(401));
            }


            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, "ja0101"),
                new Claim(ClaimTypes.Name, "user"),
                new Claim(ClaimTypes.Role, "employee")
            };

            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["SecretKey"]));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var token = new JwtSecurityToken
                        (
                issuer: "Gakko",
                audience: "Students",
                claims: claims,
                expires: DateTime.Now.AddMinutes(10),
                signingCredentials: creds
                        );


            var refreshToken = Guid.NewGuid();

            _dbService.UpdateToken(Guid.Parse(refToken), refreshToken);


            return(Ok(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(token),
                refreshToken = refToken
            }));
        }