我正在尝试使用 Svelte 构建具有基于角色的访问权限的 SPA。来自 Angular 的路由保护,我想设置类似的东西。
最好的方法是什么?
编辑:
我确实指的是 SvelteKit,我更新了我的问题以反映这一点。
我假设您指的是 SvelteKit,其中包括路由。请确认?
如果每个路由都有子文件夹,则可以在每个路由文件夹中创建一个 __layout.svelte 文件,该文件将在对该路由的每个请求时运行。您可以将保护逻辑放在布局文件中。
例子:
文件位置:/src/admin/__layout.svelte
<script context="module">
import { goto } from '$app/navigation';
import { browser } from '$app/env';
// import your user store here.
// if (browser && $user)
// Add your specific guard logic here, you need to include the 'browser'
//check otherwise Vite tries to process it on the server side
if (browser) {
// Use Goto to redirect users if neccessary
goto('login');
}
</script>
<!--<slot> the same as router-outlet -->
<slot />
svelte-router-spa 模块为路由、最小配置和简单使用提供了良好且实用的功能。包括后卫。
编辑:
作者已将问题更改为 sveltekit。@justintimeza的答案是正确的。
以下解释仅适用于苗条。
Svelte 没有路由,您可以使用诸如routify、tinro 之类的包来为您提供路由实用程序。
另外,请查看有关方法的svelte-routing。