理清逻辑
登录限制的逻辑,简单划分一下就是下面几点:
- 登录成功时set一个token,没登录的话没有token
- 访问除了tabbar的页面和登录页以外的页面时都要鉴权
- 鉴权成功继续访问,失败则跳到login
理清楚后,得出需要get和set两个方法。然后开始封装此函数
第一步
在根目录下新建common文件夹,在其里面新建一个auth.js文件,编写set和getToken方法
const TokenKey = 'uni_token';
// 认证令牌
export function getToken() {
return uni.getStorageSync(TokenKey)
}
export function setToken(token) {
return uni.setStorageSync(TokenKey, token)
}
export function removeToken() {
return uni.removeStorageSync(TokenKey)
}
第二步
在login的登录逻辑中引入auth文件的setToken方法,用它进行存取token的行为。
import {setToken} from '../../common/auth.js';
//此处省略
if(//登录成功的逻辑){
setToken('logined')
}
第三步
在需要登录鉴权才能跳转的页面中,引入auth中的getToken方法(是get不是set)进行鉴权。
要把鉴权逻辑写在onLoad钩子中,因为此时页面还渲染出来。
import {getToken} from '../../common/auth.js';
onLoad(){
let token = getToken()
if (!token) {
uni.reLaunch({
url: "/pages/login/login"
})
}
}