开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情
背景
在每个含有登录体系的项目中,都会对未登录的用户做一些页面的拦截判断,判断该用户是否登录,如果未登录则自动跳转到登录页面或其他指定页面,本文就是介绍在uniCloud中如何针对未登录用户进行页面拦截以及自动跳转到登录页。
uniIdRouter自动路由
uniIdRouter 是一个运行在前端的、对前端页面访问权限路由进行控制的方案。
在uniCloud中直接有提供好的uniIdRouter解决方案,我们只需要在项目中进行简单配置即可达到使用目的。
打开page.json进行配置:
"uniIdRouter": {
"loginPage": "uni_modules/uni-id-pages/pages/login/login-withpwd", // 登录页面路径
"needLogin": [
"pages/.*" // 需要登录才可访问的页面列表,可以使用正则语法
],
"resToLogin": true // 自动解析云对象及clientDB的错误码,如果是客户端token不正确或token过期则自动跳转配置的登录页面,配置为false则关闭此行为,默认true
}
注意:
uniIdRouter底层使用navigateTo、redirectTo、reLaunch、switchTab的拦截器进行页面跳转拦截,不会拦截进入首页,web端和app端会拦截原生tabbar点击,其他端不会拦截原生tabbar点击。 一般tabbar页面都不做自动跳转,而是在页面内再提供登录按钮。
最后
除了使用uniIdRouter外,我们在项目中也可以使用判断token是否存在或者其他方式来进行页面路由跳转,根据业务需求来进行搭配使用。