【发布时间】:2021-09-15 04:24:10
【问题描述】:
我正在尝试使用 Svelte 构建具有基于角色的访问权限的 SPA。来自带有路由保护的 Angular,我想设置类似的东西。
最好的方法是什么?
编辑:
我确实指的是 SvelteKit,我更新了我的问题以反映这一点。
【问题讨论】:
我正在尝试使用 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。
Svelte 没有路由,您可以使用像 routify、tinro 这样的包来为您提供路由实用程序。
另外,请查看svelte-routing 的方法。
【讨论】: