Home > Article > Backend Development > Detailed explanation of routing verification and corresponding interception methods in Vue
In web projects, routing verification and corresponding interception are often required based on whether you are logged in or not. This article mainly introduces the use of routing verification and corresponding interception in Vue in detail. It has certain reference value. Interested friends can refer to it. I hope it can help everyone.
First, write a store.js in vuex to store the login status. The code is as follows
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { user: false }, mutations: { // 登录 login (state, user) { state.user = user }, // 退出 logout (state, user) { state.user = false } } })
Route verification:
Route verification uses router.beforeEach( (to, from, next) => { }
The to here represents the route you want to go to, from refers to which route you are jumping from, and next is Determine the operation. If it is empty, it means release.
For example: the next hop route is '/watchHouse' or '/AgentMsg'. If you are not logged in, use the code next ({path: '/login'})
Jump to the login interface:
##
if (!store.state.user && (to.path === '/watchHouse' || to.path === '/AgentMsg')) { next({ path: '/login' }) }For example: under route '/my', you want to jump to. '/ToolCompute', if you are not logged in, jump to the login page. The code is as follows:
##
if (!store.state.user && (from.path === '/my') && (to.path === '/ToolCompute')) { next({ path: '/login' }) }
router.beforeEach((to, from, next) => { if (to.path === '/login') { next() } else { if (!store.state.user && (to.path === '/watchHouse' || to.path === '/AgentMsg')) { next({ path: '/login' }) } else { next() } if (!store.state.user && (from.path === '/my') && (to.path === '/ToolCompute')) { next({ path: '/login' }) } } })
complete routing information is required, the routing jump will not be judged, as shown in the following figure:
##. If the routing verification is written in front of the VUE instance, such a problem will not occur. In this way, the routing judgment will be performed first, and then the content in the instance will be executed.The code sequence is as follows:
Response interception: For example, in the root instance, use the checkLogin() method to determine the status of the login information, and add a login timeout to intercept the response. The code is as follows ##.
#var app=new Vue({ el: '#app', router, store, created(){ checkLogin().then(function (res) { if(res.data&&res.data.code==1){ store.commit('login',true); } else{ router.push('/watchHouse-css'); } }) }, template: '<App/>', components: { App } }) //响应拦截器 axios.interceptors.response.use(function(res){ //如果是未登录 if(res.data&&res.data.code==2){ app.$alert('登录用户已超时,请重新登录', '提示', { confirmButtonText: '确定', type:'warning', closeOnClickModal:false, callback: action => { router.push('/watchHouse-css') } }); } return res; },function(err){ return Promise.reject(err); })
Related recommendations:
How to use calculated properties in vue
The above is the detailed content of Detailed explanation of routing verification and corresponding interception methods in Vue. For more information, please follow other related articles on the PHP Chinese website!