Heim > Fragen und Antworten > Hauptteil
P粉7242568602023-09-02 07:57:11
单独使用 Svelte 时,您可以使用 Client-侧组件API
import App from "./App.svelte" keycloak.init({ onLoad: initOptions.onLoad }).then((auth) => { if (!auth) { window.location.reload(); } else { new App({ target: document.getElementById('#app'), props: { keycloak: keycloak } }) }) }
在 SvelteKit 应用中,您可以使用 src/routes/+layout.js 添加全局行为:
// layout.js import { browser } from "$app/environment"; /** * @type {import('./$types').LayoutLoad} */ export const load = async () => { let keycloakPromise; if (browser) { keycloakPromise = keycloak.init({ onLoad: initOptions.onLoad }).then((auth) => { if (auth) { return keycloak; } }); } return { keycloak: keycloakPromise, }; };
<!-- layout.svelte -->
<script>
import { onMount } from "svelte";
/** @type {import('./$types').LayoutData} */
export let data;
onMount(() => {
if (!data.keycloak) {
window.location.reload();
}
});
</script>
{#if data.keycloak}
<slot />
{/if}
当data.keycloak
未定义时,认证失败。
这允许有条件地渲染内容。
(代码示例假设 keycloak 是客户端身份验证)