uniCloud 使用uniIdRouter进行权限路由控制

1,338 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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
    }
image.png 以上代码,我们在page.json中进行设置,将登录页面设置为uni-id-page中自带的账号密码登陆页面,并将其他页面都设置成登录拦截,这里当用户没有登录或者token失效后就会自动跳转到配置好的登录页。

注意:

uniIdRouter底层使用navigateTo、redirectTo、reLaunch、switchTab的拦截器进行页面跳转拦截,不会拦截进入首页,web端和app端会拦截原生tabbar点击,其他端不会拦截原生tabbar点击。 一般tabbar页面都不做自动跳转,而是在页面内再提供登录按钮。

最后

除了使用uniIdRouter外,我们在项目中也可以使用判断token是否存在或者其他方式来进行页面路由跳转,根据业务需求来进行搭配使用。