时间:2021-04-21 09:40:39 | 栏目:vue | 点击:次
本文介绍了vue-resource请求实现http登录拦截或者路由拦截的方法,分享给大家,具体如下:
项目需求
以上是登录超时,登录弹窗框自动弹出来
代码片段
路由文件
export default [ { name: 'root', path: '', component: function (resolve) { require(['你的vue文件路径地址'], resolve); }, children: [ { name: 'applicationLayout', path: '/app/applicationLayout/:appId', component: function (resolve) { require(['你的vue文件路径地址'], resolve); }, meta: { requireAuth: true, // 需要登录才能进入的页面可以增加一个meta属性 } } ] ]
main.js 入口文件中加入以下代码
const UNAUTHORIZED_CODE = 401; router.beforeEach((to, from, next) => { if (to.meta.requireAuth) { if (storage.get('platformUser')) { store.dispatch('loginUser', JSON.parse(storage.get('platformUser'))); //将用户信息存储到vuex中,供全局使用 next(); } else { store.dispatch('initLoginModal', {state: true}); //显示登录弹窗 next(); } } else { next(); } }); //拦截http请求中返回401状态码,并针对其显示登录弹窗 Vue.http.interceptors.push((request, next) => { next((response) => { if (response.body.status === UNAUTHORIZED_CODE) { //与后台约定登录失效的返回码 store.dispatch('initLoginModal', {state: true}); //显示登录弹窗 store.dispatch('removeUser'); //移出浏览器中存储的用户信息 } return response; }); });