예제 #1
0
        public void GenerateLogoutToken(UserDb user)
        {
            var key     = GetRandom(32);
            var keySalt = GetRandom(16);
            var keyHash = GetRefreshKeyHashed(key, keySalt);

            var logoutToken = new LogoutTokenDb
            {
                Created   = DateTime.UtcNow,
                TokenKey  = keyHash,
                TokenSalt = keySalt,
                User      = user,
            };

            dbContext.LogoutToken.Add(logoutToken);
            dbContext.SaveChanges();

            var logoutTokenDto = new LogoutTokenDto
            {
                Id       = logoutToken.Id,
                TokenKey = Convert.ToBase64String(key),
            };

            var authOptions = new CookieOptions
            {
                MaxAge = new TimeSpan(0, 30, 0),
            };

            var sessionJson      = JsonSerializer.Serialize(logoutTokenDto);
            var sessionJsonBytes = System.Text.Encoding.UTF8.GetBytes(sessionJson);
            var sessionBase64    = Convert.ToBase64String(sessionJsonBytes);

            context.Response.Cookies.Append(AUTH_LOGOUT_TOKEN, sessionBase64, authOptions);
        }
예제 #2
0
        public void RemoveLogoutToken(LogoutTokenDb logoutToken)
        {
            // Fix: Delete from Db
            context.Response.Cookies.Delete(AUTH_LOGOUT_TOKEN);

            dbContext.LogoutToken.Remove(logoutToken);
            dbContext.SaveChanges();
        }