Example #1
0
        private async Task <Tuple <string, string> > GenerateTokens(User identityUser)
        {
            // Generate access token
            string accessToken = await GenerateAccessToken(identityUser);

            // Set Access Token Cookie
            var accessTokenCookieOptions = new CookieOptions
            {
                HttpOnly = true,
                Secure   = true,
                SameSite = SameSiteMode.None
                           //Expires = DateTime.UtcNow.AddDays(7)
            };

            HttpContext.Response.Cookies.Append("accessToken", accessToken, accessTokenCookieOptions);


            // Generate refresh token
            string refreshToken = GenerateRefreshToken();

            // Set Refresh Token Cookie
            var refreshTokenCookieOptions = new CookieOptions
            {
                HttpOnly = true,
                Secure   = true,
                SameSite = SameSiteMode.None
                           //Expires = DateTime.UtcNow.AddDays(7)
            };

            HttpContext.Response.Cookies.Append("refreshToken", refreshToken, refreshTokenCookieOptions);


            // Save refresh token to database
            RefreshToken rf = new RefreshToken
            {
                Token     = refreshToken,
                ExpiryOn  = DateTime.UtcNow.AddDays(jwtBearerTokenSettings.RefreshTokenExpiryInDays),
                CreatedOn = DateTime.UtcNow,
                UserId    = identityUser.Id,
                User      = identityUser
            };

            await refreshTokenRepository.Add(rf);


            return(new Tuple <string, string>(accessToken, refreshToken));
        }