2

我正在尝试使用 Svelte 构建具有基于角色的访问权限的 SPA。来自 Angular 的路由保护,我想设置类似的东西。

最好的方法是什么?

编辑:

我确实指的是 SvelteKit,我更新了我的问题以反映这一点。

4

3 回答 3

3

我假设您指的是 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 />
于 2021-07-09T10:14:17.620 回答
0

svelte-router-spa 模块为路由、最小配置和简单使用提供了良好且实用的功能。包括后卫。

https://www.npmjs.com/package/svelte-router-spa#usage

于 2021-07-24T12:07:57.750 回答
-3

编辑:

作者已将问题更改为 sveltekit。@justintimeza的答案是正确的。

以下解释仅适用于苗条。

Svelte 没有路由,您可以使用诸如routifytinro 之类的包来为您提供路由实用程序。

另外,请查看有关方法的svelte-routing

于 2021-07-09T07:06:44.813 回答