Initialisieren Sie die Svelte-Anwendung basierend auf dem Versprechen
P粉872101673
2023-09-01 09:35:33
<p>Ich habe zuvor mehrere Vue-Anwendungen entwickelt, die Keycloak zur Authentifizierung und Autorisierung verwendeten. Für Vue-Anwendungen bietet Keycloak eine Lösung, um sicherzustellen, dass nicht authentifizierte Benutzer keine Vue-Anwendungen laden können, indem die Anwendung nur dann initialisiert wird, wenn der Benutzer authentifiziert ist. </p>
<pre class="brush:js;toolbar:false;">keycloak.init({ onLoad: initOptions.onLoad }).then((auth) => {
if (!auth) {
window.location.reload();
} anders {
Vue.$log.info("Authentifiziert");
newVue({
el: '#app',
render: h => h(App, { props: { keycloak: keycloak } })
})
}
...
</pre>
<p>Jetzt arbeite ich an einem Svelte-Projekt und möchte denselben Ansatz anwenden. Gibt es eine Möglichkeit, eine Svelte-Anwendung basierend auf Promises zu initialisieren, ähnlich wie es in Vue mit Keycloak gemacht wird? </p>
<p>Ich habe versucht, nach einer Lösung zu suchen, kann aber nichts finden, das dieses Problem speziell für Svelte angeht. </p>
<p>Der größte Vorteil für mich besteht darin, dass Sie immer zu 100 % sicher sind, dass der Benutzer authentifiziert ist, und Sie immer Zugriff auf das JWT-Token haben, um es bei Bedarf an das Backend zu senden. </p>
单独使用 Svelte 时,您可以使用 Client-侧组件API
在 SvelteKit 应用中,您可以使用 src/routes/+layout.js 添加全局行为:
当
data.keycloak
未定义时,认证失败。 这允许有条件地渲染内容。(代码示例假设 keycloak 是客户端身份验证)