需求: 当向后端请求接口返回 403 的时候,直接跳到登录页面让用户登录

实现方案: 在请求结束后拦截器中判断,如果是 403 就跳转

遇到难题: 一级页面(我的) onShow() 中有接口请求,用户在没有登录的状态下,来到我的页面, 接口报错返回403 ,触发我们在拦截器写好的方法,跳转到登录页面,

    出现怪异现象:1.进入到我的页面, 会连续跳转2次到登录页面(因为我的页面有两个请求都返回 403,所以会连续跳两次)

           2.跳转到登录页面后, 点击导航栏返回后, 接口会再次请求报错返回403(因为onShow的方法) ,触发我们在拦截器写好的方法,再次跳转到登录页面(死循环)

解决方法:

处理怪异现象1:

1.1在跳转到登录页面之前向本地存储中获取 jump (得到空)

1.2if 判断进入到跳转登录页的方法. (注意延迟300跳转)

1.3同时再为本地存储 jump 设一个值.(这样做就可以避免 300毫秒以内的接口即使报403,也不会进入到if(!jump)函数体中,也就不会出现连续跳转了)

1.4在登录页面将本地存储 jump 移除(别忘记了,不然之后其他接口报 403 就不会进入函数体了,不会跳转了)

http.js文件

login.vue 文件

处理怪异现象2:

我们在登录页面中,使用uni-app的 onBackPress 事件来监听用户点击返回键

如果是从其他页面来的,点击返回键执行back方法

back方法:

uni-app通过判断接口403跳转登录页面的问题的更多相关文章

  1. HBuilder开发APP自动登录时跳过"登录页面"

    刚接触开发公司APP项目,用HBuilder开发工具. manifest.json中的入口页面就是"登录页面",现在获取到自动登录状态是true,但是真机联调时"登录页面 ...

  2. 登录超时,给出提示跳到登录页面(ajax、导入、导出)

    一.一般页面登录超时验证,可以用过滤器filter,如下: package com.lg.filter; import java.io.IOException; import javax.servle ...

  3. session过期,拦截ajax请求并跳转登录页面

    1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面 public void doFilter(ServletRequest request, ServletR ...

  4. 重写ajax方法实现异步请求session过期时跳转登录页面(转)

    一般我们会在过滤器里判断登录状态,如果没登录就跳转登录页面,过滤器java核心代码如下: UserItem loginUser = (UserItem)request.getSession().get ...

  5. 记一次IIS发布网站导致系统时常跳入登录页面的问题解决

    服务器:winserver2012R2 iis 发布网站后,正常浏览网页,时常跳到登录页面,第一反应session过期,因为登录信息都存在session,但session 都是默认配置过期时间为20分 ...

  6. 详解springmvc控制登录用户session失效后跳转登录页面

    springmvc控制登录用户session失效后跳转登录页面,废话不多少了,具体如下: 第一步,配置 web.xml <session-config> <session-timeo ...

  7. ajax前置处理实现异步请求session过期时跳转登录页面

    第一篇博文,mark一下zhq[0]. 问题描述:用户页面,当session过期或都session注销后,普通页面后端都会有过滤器,session过期Redirect到登录页面,但是ajax请求后端只 ...

  8. jsp+js完成用户一定时间未操作就跳到登录页面

    <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" ...

  9. 重写ajax方法实现异步请求session过期时跳转登录页面

    jQuery(function($){ // 备份jquery的ajax方法 var _ajax=$.ajax; // 重写ajax方法, $.ajax=function(opt){ var _suc ...

随机推荐

  1. Maven 依赖范围 scope 属性详解

    依赖范围就是用来控制依赖与三种 classpath(编译 classpath.测试 classpath.运行 classpath)的关系. 依赖范围(scope) 对于编译 classpath 有效 ...

  2. Centos7 安装mysql-8.0.18(rpm)

    1.前言 当前MySQL最新版本:8.0.18 (听说比5.7快2倍)官方之前表示:MySQL 8.0 正式版 8.0.18 已发布,MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量 ...

  3. k8s进入指定pod下的指定容器的命令

    访问某pod的某个容器: kubectl --namespace=default exec -it user-deployment-54469dd57-vg87g --container user - ...

  4. Docker安装(二)

    一.前提条件 目前,CentOS 仅发行版本中的内核支持 Docker. Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上. Docker 运行在 Cent ...

  5. JDOJ 1065 打倒苏联修正主义

    JDOJ 1065 https://neooj.com/oldoj/problem.php?id=1065 题目描述 [”客观”背景]苏修是苏联修正主义的简称.从1956年到1966年的10年间,过去 ...

  6. [Taro] Taro 环境安装 (一)

    Taro  环境安装 Taro是一个前端小程序框架,通过这个框架写一套代码,再通过 Taro 的编译工具,就可以将源代码分别编译出可以在不同端(微信/百度/支付宝/字节跳动小程序.H5.React-N ...

  7. 【day03】php

    一.类型判别函数库 1.安装:类型判别函数库是PHPCORE的组成部分,不用安装 2.  (1)is_integer|is_int|is_long     描述:  检测变量是否是整数     格式: ...

  8. OSG :三维无序离散点构建Delaunay三角网

    利用OSG的osgUtil库里面的DelaunayTriangulator类. points是需要构建三角网的点 osgUtil::DelaunayTriangulator* trig = new o ...

  9. docker环境下数据库的备份(postgresql, mysql)

    posgresql 备份/恢复 mysql 备份/恢复 补充 posgresql 备份/恢复 备份 DATE=`date +%Y%m%d-%H%M` BACK_DATA=xxapp-data-${DA ...

  10. asp.net core 3.0 身份认证 替换为自已的提供程序 AuthenticationStateProvider replace to SelfAuthenticationStateProvider

    public void ConfigureServices(IServiceCollection services) { // 添加身份验证服务 services.AddAuthorizationCo ...