vue-resource请求,实现http登录拦截或者路由拦截

简介:

项目需求

  • 项目是前后台分离,前端负责数据对接,以及业务逻辑的处理,后台只需要给相应的接口即可
  • 后台会控制接口的授权情况(即,未登录的接口,统一返回401未授权状态码,前端根据vue-resource的拦截器拦截符合条件的状态,并做出相应的处理。)
  • 以下为两个系统的登录页面,作为请求超时或者登录拦截的跳转页面

3f63e23e8eaecf23b9dcab1c14343b2435572111

以上是登录超时,登录弹窗框自动弹出来

代码片段

  • 路由文件
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;
  });
});

以上便能实现登录之前针对某些特定路由的拦截,和后台接口授权失效时前端业务逻辑操作处理, 整篇文章仅作知识点积累,如有不妥之处,请多多包涵。

原文发布时间:2018年01月15日

作者:罗胖胖

本文来源:开源中国  如需转载请联系原作者

目录
相关文章
|
11天前
|
Rust 前端开发 API
Tauri 开发实践 — Tauri HTTP 请求开发
本文介绍了如何在 Tauri 中发起 HTTP 请求。首先通过安装 Tauri 生态中的工具包并配置 `tauri.conf.json` 文件来允许特定域名的 HTTP 通信。接着封装了一个简单的 HTTP 客户端类,并在页面中使用该客户端实现 GET 和 POST 请求。最后提供了完整的源码地址以供参考。此功能使得桌面应用能够与远程服务器进行交互,增强了应用的实用性。
40 1
Tauri 开发实践 — Tauri HTTP 请求开发
|
16天前
|
缓存 网络协议 JavaScript
【HTTP】构造HTTP请求和状态码
【HTTP】构造HTTP请求和状态码
39 1
【HTTP】构造HTTP请求和状态码
|
5天前
|
JavaScript API
vue 批量自动引入并注册组件或路由等等
【10月更文挑战第12天】 vue 批量自动引入并注册组件或路由等等
|
5天前
|
JavaScript 前端开发 API
vue3中常用插件的使用方法:按需引入自定义组件,自动导入依赖包,自动生成路由,自动生成模拟数据
vue3中常用插件的使用方法:按需引入自定义组件,自动导入依赖包,自动生成路由,自动生成模拟数据
91 0
|
5天前
|
JavaScript 前端开发 UED
vue中vue-router路由懒加载(按需加载)的作用以及常见的实现方法
vue中vue-router路由懒加载(按需加载)的作用以及常见的实现方法
30 1
|
12天前
|
存储 JSON API
HTTP 请求与响应处理:C#中的实践
【10月更文挑战第4天】在现代Web开发中,HTTP协议至关重要,无论构建Web应用还是API开发,都需要熟练掌握HTTP请求与响应处理。本文从C#角度出发,介绍HTTP基础知识,包括请求与响应结构,并通过`HttpClient`库演示如何发送GET请求及处理响应,同时分析常见错误并提供解决方案,助你更高效地完成HTTP相关任务。
55 2
|
12天前
|
JavaScript 前端开发 UED
|
5天前
|
JavaScript API
Vue中使用require.context()自动引入组件和自动生成路由的方法介绍
Vue中使用require.context()自动引入组件和自动生成路由的方法介绍
9 0
|
9天前
|
JavaScript
Vue路由传参实战指南:三种常用方法示例演示
Vue路由传参实战指南:三种常用方法示例演示
34 0
|
14天前
|
SQL JSON 缓存
你了解 SpringBoot 在一次 http 请求中耗费了多少内存吗?
在工作中常需进行全链路压测并优化JVM参数。通过实验可精确计算特定并发下所需的堆内存,并结合JVM新生代大小估算GC频率,进而优化系统。实验基于SpringBoot应用,利用JMeter模拟并发请求,分析GC日志得出:单次HTTP请求平均消耗约34KB堆内存。复杂环境下,如公司线上环境,单次RPC请求内存消耗可达0.5MB至1MB,揭示了高并发场景下的内存管理挑战。