路由页的登录导航守卫设置
1 import Cookies from 'js-cookie' 2 3 // Not login 4 router.beforeEach((to, from, next) => { 5 if (to.matched.some(m => m.meta.auth)) { 6 // 对路由进行验证 7 if (Cookies.get('userInfo')) { // 已经登陆 8 next() // 正常跳转到设置好的页面 9 } else { 10 // 未登录则跳转到登陆界面,query:{ Rurl: t o.fullPath} 11 // 表示把当前路由信息传递过去方便登录后跳转回来; 12 next({ path: '/login', query: { Rurl: to.fullPath } }) 13 } 14 } else { next() } 15 })
引入js-cookie
npm i js-cookie
模块化开发时:
import Cookies from 'js-cookie'
VueX中的设置
import Vue from 'vue'
import Vuex from 'vuex'
import Cookies from 'js-cookie'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
userInfo: Cookies.get('userInfo'),
isLogin: 0,
currentUser: ''
},
mutations: {
loginSuc(state,data){
state.userInfo=data
//缓存2小时,1msx1000=1s,1sx60=1min,1minx60x2=2hours
var date = new Date((new Date().getTime()+120*60*1000))
Cookies.set('userInfo',data,{expires:date})
},
loginOut(state) {
state.userInfo = null
Cookies.remove('userInfo');
}
}
})
export default store
登录页登录逻辑部分
handleLogin() {
var name = this.loginForm.username;
this.$message({
message: "欢迎 " + name + ",(*^_^*)",
center: true,
});
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.userInfo.name = name;
this.userInfo.isLogin = "100";
this.$store.commit("loginSuc", this.userInfo);
const url = this.$route.query.Rurl || "/";
this.$router.push(url);
} else {
console.log("error submit!!");
return false;
}
});
},
注:commit提交到store里一次最多提交2个,多了会报错