Skip to content

路由元信息

有时你希望将自定义的任意信息添加到路由上,如是否需要授权的场景,通过路由配置对象的 meta 属性可以实现前面的需求,并且它会被记录在全局路由配置状态中,路由信息和导航守卫都可以访问到。定义路由的时候你可以这样配置 meta 字段:

ts
import {RouteRecordNormalized} from '@/uni_modules/kux-router';

const routes = [
    {
        path: '/pages/posts/new',
        meta: {
            // 只有经过身份认证的用户才能创建帖子
            requiresAuth: true
        }
    },
    {
        path: '/pages/posts/info',
        meta: {
            // 任何人都可以阅读
            requiresAuth: false
        }
    }
] as RouteRecordNormalized[];

这时候你可以通过 beforeEach 全局前置守卫来检查是否授权

ts
import { RouteRecordNormalized } from '@/uni_modules/kux-router';

router.beforeEach(async (to, from): Promise<any | null> => {
    if (to?.meta?.get('requiresAuth') == true && !auth.isLoggedIn()) {
        // 此路由需要授权,请检查是否已登录
        // 如果没有,则重定向到登录页面
        return {
            path: '/pages/login/index',
            // 保存现在的位置,方便后面跳回来
            query: {
                redirect: to.fullPath
            }
        } as RouteRecordNormalized;
    }

    return null;
});

Released under the MIT License.