Best Practices for Keycloak Initialization Before Vue Router Guards #15
-
Hello Here's my current setup:
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from '@/App.vue'
import router from '@/router'
import { vueKeycloak } from '@josempgon/vue-keycloak'
(async () => {
const app = createApp(App)
if (import.meta.env.PROD) {
await vueKeycloak.install(app, {
config: {
url: import.meta.env.VITE_KEYCLOAK_URL,
realm: import.meta.env.VITE_KEYCLOAK_REALM,
clientId: import.meta.env.VITE_KEYCLOAK_CLIENT
},
initOptions: {
onLoad: 'login-required',
silentCheckSsoRedirectUri: `${window.location.origin}/silent-check-sso.html`,
checkLoginIframe: true
}
})
router.keycloak = app.config.globalProperties.$keycloak
}
initializeTarteaucitron()
app.use(createPinia())
app.use(router)
app.mount('#app')
})() Here is my router config: import { createRouter, createWebHistory } from 'vue-router'
const routes = []
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes,
})
router.beforeEach(async (to) => {
if (!router.keycloak.authenticated) {
await router.keycloak.login()
}
})
export default router |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
Hi @loic-bellinger! The main purpose to use this Vue wrapper to the <script setup>
import { useKeycloak } from '@josempgon/vue-keycloak';
const { isAuthenticated } = useKeycloak();
</script>
<template>
<div v-if="isAuthenticated">
<router-view />
</div>
<div v-else>
<-- progress component !-->
</div>
</template> Nevertheless, this is for the default initialization behaviour, i.e. without |
Beta Was this translation helpful? Give feedback.
Using
check-sso
you can try something like the following (not tested):