Initialiser l'application Svelte en fonction de la promesse
P粉872101673
2023-09-01 09:35:33
<p>J'ai déjà développé plusieurs applications Vue qui utilisaient Keycloak pour l'authentification et l'autorisation. Pour les applications Vue, Keycloak fournit une solution garantissant que les utilisateurs non authentifiés ne peuvent pas charger les applications Vue en initialisant l'application uniquement lorsque l'utilisateur est authentifié. </p>
<pre class="brush:js;toolbar:false;">keycloak.init({ onLoad: initOptions.onLoad }).then((auth) => {
si (!auth) {
window.location.reload();
} autre {
Vue.$log.info("Authentifié");
nouvelleVue({
el : '#app',
rendu : h => h(App, { accessoires : { keycloak : keycloak } })
})
}
...
≪/pré>
<p>Maintenant, je travaille sur un projet Svelte et je souhaite appliquer la même approche. Existe-t-il un moyen d'initialiser une application Svelte basée sur Promises, de la même manière que dans Vue à l'aide de Keycloak ? </p>
<p>J'ai essayé de chercher une solution, mais je ne trouve rien qui résolve spécifiquement ce problème pour Svelte. </p>
<p>Le plus grand avantage pour moi est que vous êtes toujours sûr à 100 % que l'utilisateur est authentifié et que vous avez toujours accès au jeton JWT à envoyer au backend si nécessaire. </p>
Lorsque vous utilisez Svelte seul, vous pouvez utiliser l'API des composants côté client
Dans une application SvelteKit, vous pouvez ajouter un comportement global en utilisant src/routes/+layout.js :
L'authentification échoue lorsque
data.keycloak
n'est pas défini. Cela permet le rendu conditionnel du contenu.(l'exemple de code suppose que le keycloak est l'authentification du client)