首页 > 其他分享 >实现无感刷新Token技术:.Net Web API与axios的完美结合

实现无感刷新Token技术:.Net Web API与axios的完美结合

时间:2025-01-12 21:50:03浏览次数:1  
标签:Web axios RefreshToken 登录 token 接口 Token 刷新 无感

备忘:https://mp.weixin.qq.com/s?__biz=MjM5MDE5MDM5NA==&mid=2449944319&idx=1&sn=71e84d8ee24769e77b19ca8367333b8f&chksm=b1bb10aa86cc99bc2f20686354e8184023278de74dba857a42d720dc47fabb654c12ecb83524&scene=21#wechat_redirect

我们都知道Token是有设置有效期的,为了安全都不会设置过长的有效期;但设置有效期太短,又会导致经常需要重新登录。

这就需要无感刷新Token的方案,来提升用户体验。

目前比较常用的方案是:双token机制。1、登录时同时返回:Token、RefreshToken,Token用于请求业务接口,RefreshToken用于刷新Token接口;2、每一次Http请求,客户端都会判断服务器返回状态,如果是401,代表Token过期;3、客户端使用RefreshToken,请求服务器Token刷新接口,并获取新的:Token,RefreshToken;

4、如果第3步骤成功返回,更新本地的Token、RefreshToken;如果返回失败,代表RefreshToken也过期了,提示过期并跳转至登录页面。

下面我们一起看下实现步骤:

1、后台登录接口

登录验证,验证用户名和密码,验证通过返回Token。

 

登录接口返回的2个内容:Token和RefreshToken,这两个有效期不一样,比如Token有效期是30分钟,RefreshToken有效期是60分钟。

 

2、后台刷新token接口

和登录接口一样,也是返回:Token和RefreshToken。

 

3、前端登录功能

在前端登录页面,成功登录后,把Token和RefreshToken存储在本地,可以存储在Cookie或者LocalStorage。

 4、错误响应拦截器

axios响应拦截器添加如下代码:a、判断Http返回状态是否为401。b、判断是否授权信息是否使用refreshToken,调用刷新token接口,同样也会发起Http请求,如果refreshToken也过期了,同样会返回401;所以这边要加判断,避免进入死循环。c、如果refreshToken也过期了,直接跳转至登录页面。

d、如果调用刷新token接口成功返回,更新本地存储的Token、RefreshToken;并获取上一次业务请求的内容,并更新验证信息,重新发起上一次业务请求,这样才能实现无感刷新。

 

5、实现效果

最终实现效果如下:1、请求用户列表接口,返回401;2、调用token刷新接口;

3、重新请求用户列表接口。

在这过程中,第一次发起用户搜索请求是失败的,我们马上刷新token,并重新发起第二次用户搜索请求,但对用户来说是透明、毫无察觉的。

 

标签:Web,axios,RefreshToken,登录,token,接口,Token,刷新,无感
From: https://www.cnblogs.com/firespeed/p/18667353

相关文章

  • webman: start.php的应用
    一,查看帮助:$phpstart.phphelpUsage:phpyourfile<command>[mode]Commands:startStartworkerinDEBUGmode.Usemode-dtostartinDAEMONmode.stopStopworker.Usemode-gtostopgracefully.......
  • Web前端------HTML块级和行内标签之行内标签
    一.行内标签介绍 行内标签----span      作用:        1.作为文本字体的容器,用来结合CSS修饰文本样式        2.根据行内标签的特性(不换行/部分块级样式不生效eg:宽高等等),做微小布局二.代码展示<!DOCTYPEhtml><htmllang=......
  • webview是什么,和小程序的关系
    文章目录什么是WebView?WebView的核心特点WebView和小程序的关系1.**WebView是小程序的重要组件**2.**小程序中的WebView功能**3.**小程序中的`<web-view>`组件**WebView在小程序中的作用和架构小程序的运行架构页面切换与多WebViewWebView在小程序中的优......
  • 47. web框架
    1.web框架本质web框架本质上可以看成一个功能强大的socket服务端,用户的浏览器可以看成拥有可视化界面的socket客户端通过网络请求实现数据交互,可简单的将web框架看做是对前端、数据库的全方位整合2.手写简易版web框架服务端importsocketserver=socket.socket()serv......
  • java基于WEB的高校实训管理系统论文+源码 2025毕设
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,高校教育也在不断地变革与创新。在高校的教学体系中,实训教学作为培养学生实践能力和综合素质的关键环节,其管理的高效性和......
  • 【Weblogic T3协议】反序列化漏洞分析(上)
    免责声明此文章中所涉及的技术、思路和工具仅供网络安全学习为目的,不得以盈利为目的或非法利用,否则后果自行承担!一、前言在初入安全的时候,就听说过weblogic的大名,当然听说的并不是weblogic如何如何好用,而是因为其漏洞出现频率实在是有点高...于是乎,便抱着学习的心态跟了跟web......
  • 使用websocket写一个发布评论和删除评论的功能
    这里我后端是使用gin框架来写的,这里我直接上代码:在上代码前,我们先进行websocket和gin框架以及gorm框架和mysql驱动的安装:goget-ugithub.com/gin-gonic/gingoget-ugithub.com/gorilla/websocketgoget-ugorm.io/gormgoget-ugorm.io/driver/mysql首先是前......
  • .NET 中管理 Web API 文档的两种方式
    前言在.NET开发中管理WebAPI文档是确保API易用性、可维护性和一致性的关键。今天大姚给大家分享两种在.NET中管理WebAPI文档的方式,希望可以帮助到有需要的同学。SwashbuckleSwashbuckle.AspNetCore是一个流行的.NET库,它使得在ASP.NETCore项目中自动生成Swag......
  • 了解Webpack:现代前端开发的静态模块打包器
            在现代前端开发中,Webpack已成为不可或缺的工具之一。作为一个静态模块打包器(modulebundler),Webpack通过分析和处理项目中的资源依赖关系,将它们打包成一个或多个bundle(捆绑包),这些bundle可以在浏览器中加载和执行。本文将详细介绍Webpack的概念、核心功能、安装......
  • Web应用安全-漏洞扫描器设计与实现
    摘要随着Web2.0、社交网络、微博等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上。Web应用的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显,黑客利用Web应用程序的漏洞得到Web服务器的控制权......