perbaikan ip 0.0.0.0

This commit is contained in:
Fanrouver
2026-01-07 09:44:54 +07:00
parent ab99ba2fe5
commit 9e399c9f64
6 changed files with 56 additions and 16 deletions
+2 -1
View File
@@ -1,11 +1,12 @@
// server/api/auth/keycloak-callback.ts - EXTENDED SESSION FIX
// Add this at the top of the file (after imports)
const SESSION_DURATION = 1 * 60 * 60; // 7 days in seconds (customize as needed)
const SESSION_DURATION = 1 * 60 * 60; // 1 hour in seconds (3600 seconds)
// Or use one of these alternatives:
// const SESSION_DURATION = 24 * 60 * 60; // 1 day
// const SESSION_DURATION = 30 * 24 * 60 * 60; // 30 days
// const SESSION_DURATION = 12 * 60 * 60; // 12 hours
// const SESSION_DURATION = 7 * 24 * 60 * 60; // 7 days
export default defineEventHandler(async (event) => {
try {
+21 -6
View File
@@ -37,21 +37,31 @@ export default defineEventHandler(async (event) => {
console.log('✅ Session cleared successfully');
// Construct the Keycloak logout URL with proper parameters
// IMPORTANT: The post_logout_redirect_uri must be registered in Keycloak client settings
const logoutUrl = new URL(`${config.keycloakIssuer}/protocol/openid-connect/logout`);
// Add required parameters for proper Keycloak logout - REDIRECT TO LOGIN PAGE
// Debug: Log the authUrl being used
console.log('🔧 Using authUrl from config:', config.public.authUrl);
// Build the redirect URI - must match what's configured in Keycloak
const postLogoutRedirectUri = `${config.public.authUrl}/LoginPage?logout=success`;
// Add required parameters for proper Keycloak logout
logoutUrl.searchParams.set('client_id', config.keycloakClientId);
logoutUrl.searchParams.set('post_logout_redirect_uri', `${config.public.authUrl}/LoginPage?logout=success`);
logoutUrl.searchParams.set('post_logout_redirect_uri', postLogoutRedirectUri);
// If we have an ID token, add it for proper session termination
// This ensures Keycloak properly terminates the SSO session
if (idToken) {
logoutUrl.searchParams.set('id_token_hint', idToken);
console.log('🔑 Added id_token_hint to logout URL');
} else {
console.warn('⚠️ No ID token available for logout hint');
console.warn('⚠️ No ID token available for logout hint - logout may not fully terminate Keycloak session');
}
console.log('🔗 Keycloak logout URL constructed:', logoutUrl.toString());
console.log('📍 Post-logout redirect URI:', postLogoutRedirectUri);
console.log('⚠️ Make sure this redirect URI is configured in Keycloak client settings!');
// Return the logout URL to the client for redirect
// This approach gives better control to the client-side code
@@ -65,13 +75,18 @@ export default defineEventHandler(async (event) => {
console.error('❌ Logout error:', error);
console.error('❌ Error stack:', error.stack);
// Even if there's an error, try to provide a basic logout URL - REDIRECT TO LOGIN PAGE
// Even if there's an error, try to provide a basic logout URL
const config = useRuntimeConfig();
const fallbackLogoutUrl = `${config.keycloakIssuer}/protocol/openid-connect/logout?client_id=${config.keycloakClientId}&post_logout_redirect_uri=${encodeURIComponent(config.public.authUrl + '/LoginPage?logout=success')}`;
const postLogoutRedirectUri = `${config.public.authUrl}/LoginPage?logout=success`;
const fallbackLogoutUrl = new URL(`${config.keycloakIssuer}/protocol/openid-connect/logout`);
fallbackLogoutUrl.searchParams.set('client_id', config.keycloakClientId);
fallbackLogoutUrl.searchParams.set('post_logout_redirect_uri', postLogoutRedirectUri);
console.warn('⚠️ Using fallback logout URL due to error');
return {
success: false,
logoutUrl: fallbackLogoutUrl,
logoutUrl: fallbackLogoutUrl.toString(),
error: 'Logout encountered an error, but providing fallback logout URL',
message: error.message
};