Vue3的路由守卫以及登录状态储存过程 |
路由守卫Vue 3使用Vue Router 4来进行路由管理和导航控制 。Vue Router提供了一些钩子函数来实现路由守卫 。 路由守卫是一些特殊的函数,它们会在路由发生变化时被调用,可以用来进行一些操作,例如权限验证、登录状态检查、页面跳转等 。 在Vue Router 4中,路由守卫可以分为三种类型:全局守卫、路由独享守卫和组件内守卫 。 全局守卫全局守卫会在所有路由跳转时被调用,可以用来进行一些全局性的操作,例如权限验证和路由跳转统计 。全局守卫有三种类型:
以beforeEach为例(router.js) import store from '../store/index.js'
// 路由守卫
router.beforeEach((to, from, next) => {
// console.log("store", store.state.uInfo)
// 判断是否登录
const uInfo = store.state.uInfo.userInfo;
if (!uInfo.userName) {
if (to.path === '/login') {
next();
return;
}
next('/login');
}
else {
next();
}
})登录状态储存在Vue 3中,可以使用Vue的响应式状态管理功能和浏览器提供的localStorage或sessionStorage API来存储登录状态 。 //在用户登录后将信息存储在localStorage中
localStorage.setItem('user', JSON.stringify(user))
//在用户注销时删除存储的信息
localStorage.removeItem('user')
//在应用程序初始化时检查用户是否已登录
const user = JSON.parse(localStorage.getItem('user'))
const isAuthenticated = user !== null
//将登录状态存储在响应式状态中
import { reactive } from 'vue'
const state = reactive({
isAuthenticated: false
})
//在登录时更新状态
state.isAuthenticated = true
//在注销时更新状态
state.isAuthenticated = false在上面的示例中,我们使用localStorage将用户信息存储在本地浏览器中,并使用Vue的响应式状态管理功能来存储登录状态 。
在应用程序初始化时,我们检查localStorage中是否存在用户信息,如果存在,则将isAuthenticated属性设置为true 。 localStorage的用法在Vue3中,
以下是如何使用它的示例: localStorage.setItem('key', 'value');您可以使用 localStorage.getItem('key');
以下是如何使用它的示例: localStorage.removeItem('key');例子: const login = () => {
store.commit('setUserInfo', data.loginData);
// 设置本地存储数据 localStorage.setItem('key', 'value');
localStorage.setItem('loginData', JSON.stringify(data.loginData))
router.push({
path: '/user',
});
}store export default {
namespace: true,
state: {
// localStorage.getItem('key');
userInfo: localStorage.getItem('loginData') && JSON.parse(localStorage.getItem('loginData')) || {},
},
mutations: {
setUserInfo(state, uInfo) {
state.userInfo = uInfo;
}
}
}退出登录时 const loginOut = () => {
localStorage.removeItem('loginData');
store.state.uInfo.userInfo = {};
router.push({
path: '/login',
})
}总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持 。 |