1,只需在项目的pages.json
内配置登录页路径、需要登录才能访问的页面等信息,uni-app框架的路由跳转,会自动在需要登录且客户端登录状态过期或未登录时跳转到登录页面。
删除保存到内存的token 也会判断为token不存在 这个功能可以用于测试,有这个功能可以管理所有的页面了。
"uniIdRouter": {//token不正确或token过期 时生效
"loginPage": "pages/index/index", // 登录页面路径
"needLogin": [
"pages/detail/.*" // 需要登录才可访问的页面列表,可以使用正则语法
],
"resToLogin": true // 自动解析云对象及clientDB的错误码,如果是客户端token不正确或token过期则自动跳转配置的登录页面,配置为false则关闭此行为,默认true
}
2.自动跳转到登录页面时会携带uniIdRedirectUrl参数,其值为encodeURIComponent(${跳转前的页面(包含路径和参数的完整页面地址)}),如果希望用户登录后跳转回之前的页面,可以使用此参数实现。
onLoad(options) {
this.uniIdRedirectUrl = decodeURIComponent(options.uniIdRedirectUrl)
},
methods: {
async login() {
// ...执行登录操作,在成功回调里跳转页面
if (this.uniIdRedirectUrl) {
uni.redirectTo({
url: this.uniIdRedirectUrl
})
}
}
3,uniIdRedirectUrl地址复杂要解析两次才能跳转成功 就是在登录页面闪2次,第一次跳转失败,回来再跳转。
4,swtab 跳转不可以 因为他不能携带参数
5,推荐使用,在每一个onshow 页面进行判断 登录。在全局app.js 中加入判断 ,这个app js 只判断一次,在打开app的时候
let token = getToken()
if (!token) {//清空内存 的时候生效
console.log('1111')
//不存在则跳转至登录页
uni.reLaunch({
url: "/pages/weixin/weixin"
})
}