【问题标题】:is there something similar to Angular route guards in SvelteKit是否有类似于 SvelteKit 中的 Angular 路由守卫的东西
【发布时间】:2021-09-15 04:24:10
【问题描述】:

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

最好的方法是什么?

编辑:

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

【问题讨论】:

    标签: svelte svelte-3 sveltekit


    【解决方案1】:

    我假设您指的是 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 />
    

    【讨论】:

    • 我确实指的是 SvelteKit。我已经更新了我的问题以反映这一点。我已经实现了类似的东西。我担心的是,如果我有很多不同的路由,我将不得不在所有这些路由中实现保护逻辑,这本质上是重复的。
    • 但是如果你把你的逻辑添加到__layout.svelte文件中,这个逻辑就会应用到所有的子路由上。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      编辑:

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

      下面的解释仍然适用于svelte。

      Svelte 没有路由,您可以使用像 routifytinro 这样的包来为您提供路由实用程序。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-04
        • 2011-01-07
        • 1970-01-01
        • 2016-08-10
        • 1970-01-01
        • 2011-05-01
        相关资源
        最近更新 更多