持久化存储
在store里面的user.js(自己创建的)中
export default {
state: {
status: false, //登录的状态,获取数据中status是1,登录成功时状态为1
token: false, //一个令牌,看你是不是进入的一个令牌
userInfo: {}
},
mutations: {
getUserInfo(state,preload){
state.status=preload.status
state.token = preload.token
state.userInfo = preload
uni.setStorageSync('userInfo', state.userInfo); //把state.userInfo存储起来
uni.setStorageSync('token', state.token); //把state.token存储起来
},
//储存之后调用
initUser(state) { //initUser自己随便起的名字
let user = uni.getStorageSync('userInfo');
//获取下面存储中setStorageSync里面的userInfo数据
state.userInfo = user
state.token = user.token
state.status = user.status
}
},
getters: {
},
actions: {
}
}
获取数据后在App.vue中触发他
<script>
export default {
onLaunch: function() {
console.log('App Launch')
this.$store.commit('initUser')
},
onShow: function() {
console.log('App Show')
this.$store.commit('initUser')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
退出后清除本地缓存
在api中login.js创建一个请求
import request from '../utils/request.js'
import store from '../store'
export function logout(){
console.log(store);
return request({
url:`/logout`,
method:'POST',
header:{
token:store.state.user.token //在打印的store中找到token的位置
}
})
}
因为接口数据有header头,所有看看request.js请求中是否加入了header
var request = function(options){
return new Promise((resolve,reject)=>{
uni.request({
url:baseURL+options.url,
method:options.method||'GET',
data:options.data||{},
header: options.header || {},
dataType:options.dataType||'json',
success: (res) => {
resolve(res.data)
},
fail: (err) => {
reject(err)
}
})
})
}
在user.js中加入清除缓存后的数据
mutations:{
layout(state) {
state.userInfo = ''
state.token = ''
state.status = ''
uni.removeStorageSync('userInfo');
uni.removeStorageSync('token');
}
}
在登录后我的那个页面中
<view @click="layOut"> 退出登录 </view>
引入文件地址
import {logout} from '../../api/login.js' //填写接口的地址
methods: {
...mapMutations(['layout']),
layOut(){
logout().then(res=>{
console.log(res);
this.layout()
uni.navigateTo({
url:'../login/login'
})
})
}
}