有些界面需要登录才能访问,如果在每个入口处判断,太麻烦还容易漏掉,可以用路由拦截,只需要知道哪些界面不需要登录就能访问即可。
我下面加了个name字段(这个字段可有可无,也可以写注释),方便后期维护查看,下面的写法是白名单的路由拼接参数通过split过滤掉参数。
// 根目录新建 uni.promisify.adaptor.js
// 其实这个文件新建项目时已经存在了,我在这个文件里面又写了个拦截
// 路由白名单
const list = [
{
url: '/shortPlay/shortPlayCategories/index',
name: '短剧分类界面',
},
{
url: '/shortPlay/searchPage/index',
name: '短剧搜索',
},
{
url: '/shortPlay/searchResultPage/index',
name: '短剧搜索结果',
},
];
//创建路由拦截,这里只判断一般跳转
uni.addInterceptor('navigateTo', {
invoke(res) {
//存在token就跳转
if (uni.getStorageSync('Authorization')) {
return true;
} else {
//白名单判断,只判断请求地址,过滤掉参数
if (list.some((item) => item.url == res.url.split('?')[0])) {
return true;
}
//重定向
res.url = '/contentPackages/login/login';
return res;
}
},
});
//main.js 引入
import './uni.promisify.adaptor';