比特派下载官方app|token已过期怎么重新登录
比特派下载官方app|token已过期怎么重新登录
详解token已过期含义及解决方 token过期是否需要重新登录-CSDN博客
>详解token已过期含义及解决方 token过期是否需要重新登录-CSDN博客
详解token已过期含义及解决方 token过期是否需要重新登录
最新推荐文章于 2024-01-03 15:56:53 发布
CRMEB商城系统
最新推荐文章于 2024-01-03 15:56:53 发布
阅读量1w
收藏
10
点赞数
文章标签:
java
数据库
redis
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_64051447/article/details/130860602
版权
详解token已过期含义及解决方 token过期是否需要重新登录Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。单一服务器架构该架
Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。
单一服务器架构
该架构下后端只有一台服务器提供服务。
认证授权流程:
1.Web应用中设置拦截器对所有请求进行拦截,如果校验不通过则跳转登陆重新认证
2.客户端发起认证请求,传入用户名密码
3.通过验证后,应用在服务器上将用户信息存入session中,并将session id返回给客户端
4.客户端将session id存在本地cookie或local storage中,再次访问时传入session id
5.Web应用根据session id对比服务器的session数据,确认用户身份
适合场景
这种模式只适合单服务器的场景
常用实现
shiro ;自定义注解 + 拦截器/AOP方案;filter方案等
缺陷
如果是分布式服务或跨域体系架构的系统则会出现session无法共享的问题。
如何解决
解决方案有两种,第一种是将session统一存放,实现分布式session共享,第二种方案是客户端生成token
分布式服务架构
分布式服务架构下,后端的服务器由一台变成了多台。
Session共享方案
认证授权流程:
1.使用nginx做负载均衡,多台web应用
2.客户端发起认证请求,根据策略到其中一台web
3.通过验证后,服务端将用户的信息存入持久化层,例如redis缓存数据库,再生成token令牌
4.并将生成的token返回客户端,存入客户端缓存。
5.客户端再次访问web,根据策略路由到其中一台,web应用查询持久化层,根据带入的token查询用户登陆信息,确认身份。
适合场景
并发量不高的分布式应用
常用实现
shiro ;自定义注解 + 拦截器/AOP方案;filter方案等
缺陷
1、这种方案的缺陷在于依赖于持久层的数据库如redis,会有单点风险,如果持久层失败,整个认证体系都会挂掉;
2、每一次调用都需要访问持久化层进行验证,会给持久化层造成压力,在高并发场景,持久化层容易成为瓶颈;
如何解决
持久层的数据库如redis做高可用和集群。
客户端token方案
认证授权流程:
1.客户端发起认证请求,根据策略到其中一台web
2.通过验证后,服务端将用户登陆信息封装成token(token本身可以自解释)返回给客户端,不存储在服务端
3.客户端将返回的完整信息存入缓存。
4.客户端再次访问web,根据策略路由到其中一台,带入登陆信息,服务端根据信息确认身份。
适合场景
优势在于服务端不保存用户会话数据,服务端无状态,不用去持久层查询从而增加了效率,适合一次性验证、restful api 的无状态认证、并发量较高的分布式应用等
常用实现
jwt
缺陷
token一旦下发便不受服务端控制,如果发生token泄露,服务器也只能任其蹂躏,在其未过期期间不能有任何措施,同时存在以下两个问题:
1、失效问题,因为token是存放在客户端的,服务端无法主动让token失效,比如踢人下线、用户权限发生变化等场景就实现不了
2、续签问题,token 有效期一般都建议设置的不太长, token 过期后用户需要重新登录,导致用户需要频繁登录
如何解决
针对失效问题:
① 将 token 存入内存数据库:将 token 存入 DB 或redis中。如果需要让某个 token 失效就直接从 redis 中删除这个 token 即可。但是,这样会导致每次使用 token 发送请求都要先从redis中查询 token 是否存在的步骤,而且违背了 JWT 的无状态原则,不可取。
② 黑名单机制:使用内存数据库比如 redis 维护一个黑名单,如果想让某个 token 失效的话就直接将这个 token 加入到 黑名单 即可。然后,每次使用 token 进行请求的话都会先判断这个 token 是否存在于黑名单中。
针对续签问题:
① 类似于 Session 认证中的做法: 假设服务端给的 token 有效期设置为30分钟,服务端每次进行校验时,如果发现 token 的有效期马上快过期了,服务端就重新生成 token 给客户端。客户端每次请求都检查新旧token,如果不一致,则更新本地的token。这种做法的问题是仅仅在快过期的时候请求才会更新 token ,对客户端不是很友好。每次请求都返回新 token :这种方案的的思路很简单,但是,很明显,开销会比较大。
② 用户登录返回两个 token :第一个是 acessToken ,它的过期时间比较短,不如1天;另外一个是 refreshToken 它的过期时间更长一点比如为10天。客户端登录后,将 accessToken和refreshToken 保存在客户端本地,每次访问将 accessToken 传给服务端。服务端校验 accessToken 的有效性,如果过期的话,就将 refreshToken 传给服务端。如果 refreshToken 有效,服务端就生成新的 accessToken 给客户端。否则,客户端就重新登录即可。
说明:JWT 最适合的场景是不需要服务端保存用户状态的场景,但是如果考虑到 token 注销和 token 续签的场景话,没有特别好的解决方案,大部分解决方案都给 token 加上了状态,这就有点类似 Session 认证了。
微服务架构
微服务架构下服务端根据业务拆分为多个服务,除了公司内部服务外,外部客户或者第三方也通过api网关统一转发请求,在这个阶段系统需要提供跨系统单点登录、第三方授权登录等基础能力。在这种架构下后端建立单独的认证授权中心。 目前实现统一身份认证和授权的技术手段较多,总体可以归纳为以下几类。
传统的 Cookie + Session 解决方案 ,有状态会话模式
认证授权流程:
同分布式服务架构中的“Session共享方案”
适合场景:
同分布式服务架构中的“Session共享方案”
常用实现:
同分布式服务架构中的“Session共享方案”
缺陷:
分布式 Session 是老牌的成熟解决方案,但因其状态化通信的特性与微服务提倡的API导向无状态通信相互违背,且共享式存储存在安全隐患,因此微服务一般不太采用
JWT+网关撤销令牌方案,无状态交互模式
认证授权流程:
同分布式服务架构中的“客户端token方案”,只是在该基础上,加上API网关令牌失效和令牌续签的机制,参考分布式服务架构中的“Session共享方案”的“如何解决”部分。
适合场景:
同分布式服务架构中的“客户端token方案”
常用实现:
同分布式服务架构中的“客户端token方案”
缺陷:
同分布式服务架构中的“客户端token方案”
JWT + OAutstrong.0 +CAS方案
CAS是单点登录的解决方案,单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS共涉及角色有:CAS Client(下文提到的系统A等)、User、CAS Server(认证中心)。CAS 是一个认证框架,其本身定义了一套灵活完整的认证流程,但其兼容主流的认证和授权协议如 OAutstrong、SAML、OpenID 等,因此一般采用 CAS + OAutstrong 的方案实现 SSO 和授权登录。
认证授权流程:
1.用户访问系统A;
2.系统A发现用户没有登录,也没有ticket,重定向到认证中心;有ticket跳转 第7步;
3.认证中心发现用户并未登录,展示登录页面;
4.用户登录;
5.认证中心登录成功,带着生成的ticket,重定向到之前的系统A页面;
6.系统A检查登录,还是未登录,但存在ticket。系统A带着ticket和认证中心进行校验;
7.认证中心返回对应的用户名;
8.系统A检查返回的用户名是否只有一个且不为空,若是,则返回给用户指定的资源信息;若不是,则跳转 第2步。
常用实现
spring security + CAS
OAutstrong.0协议考虑到了微服务认证中的方方面面,提供的多种授权模式。这种方案的优点是安全性好,是业内成熟的给第三方提供授权登录解决方案,但是实现成本和复杂度高。 OAutstrong.0提供了4种授权模式,能够适应多种场景,作为基于令牌的安全框架,可以广泛用于需要统一身份认证和授权的场景。 在 OAutstrong.0 的实施过程中,一般会采用 JWT 作为令牌的主要标准。以文章分享举个例子,你在(登录后)浏览某论坛时,遇到了一篇好文章,想要分享给大家时,你需要登录(扫码或者登录用户名密码)第三方账户如来完成分享。
OAutstrong.0还有个替代方案,OIDC,它是OpenID Connect的简称,OIDC=(Identity, Authentication) + OAuth 2.0。它在OAutstrong上构建了一个身份层,是一个基于OAutstrong协议的身份认证标准协议。暂时没研究,有兴趣的朋友可以查查。
认证授权流程:
1、在点击分享链接时,主服务器会直接(接口)请求第三方服务器,第三方服务器会校验主服务器上的用户此时是否授权给自己(第三方);
2、没有授权信息,用户登录(扫描或者密码)。
3、主服务器拿着用户的登录信息去第三方确认认证授权(密码是否正确、是否授权)。
4、认证失败,密码错误。(重新登录)
5、认证成功(确认授权),第三方认证服务会返回的授权码。
6、主服务器带着授权码请求第三方资源服务器,第三方资源服务器会返回指定的URI(分享界面)。
7、用户操作分享操作(填写自己的话语),点击分享按钮完成。
常用实现
spring security +OAutstrong.0
OAutstrong.0提供了4种授权模式,如下:
授权码模式
授权码模式相对其他三个模式来说是功能最完整,流程最安全严谨的授权方式。它的特点是通过客户端的后台服务器与服务提供商的认证服务器进行交互:
A. 用户访问客户端,客户端将用户导向认证服务器,需要携带客户端ID凭证和重定向URI。
B. 用户选择是否给予客户端授权。
C. 假设用户给予授权,认证服务器将用户导向事先指定的重定向URI,同时附上一个授权码。
D. 客户端收到授权码后,携带事先指定的重定向URI和授权码向认证服务器申请令牌。
E. 认证服务器核对授权码和重定向URI,确认无误后,向客户端颁发访问令牌(access token)和刷新令牌(refresh token)。
这里的resource owner代表客户,user-agent代表客户使用的访问工具如浏览器或App,client指第三方客户端
简化模式
简化模式不通过服务端程序来完成,比授权码模式减少了“授权码”这个步骤,直接由浏览器发送请求获取令牌,令牌对访问者是可见的,且客户端不需要认证,这种模式一般用于无后端应用,如手机/桌面客户端程序、浏览器插件
A. 用户访问客户端,客户端将用户导向认证服务器,需要携带客户端ID凭证和重定向URI。
B. 用户选择是否给予客户端授权。
C. 假设用户给予授权,认证服务器将用户导向事先指定的重定向URI,并在URI的Hash部分包含了访问令牌(Fragment)。
D. 浏览器向资源服务器发出请求,其中不包含事先收到的Hash部分(Fragment)。
E. 资源服务器返回一段脚本,其中包含的代码可以获取Hash部分中的令牌。
F. 浏览器执行事先获取的脚本,提取出令牌
G. 浏览器将令牌发送给客户端。
密码模式
密码模式中,用户向客户端提供用户名和密码,客户端使用这些信息,直接向认证服务器索要授权。这种模式违背了前面提到的微服务安全要解决的问题(不暴露用户名和密码),但是在一些用户对客户端高度信任的情况下,例如公司内部软件间的授权下,使用这种模式也是适用的
A. 用户向客户端提供用户名和密码。
B. 客户端将用户名和密码发送给认证服务器,向认证服务器索要令牌。
C. 认证服务器确认无误后,向客户端提供访问令牌。
客户端模式
客户端模式是客户端以自己的名义去授权服务器申请授权令牌,并不是完全意义上的授权。一般不适用这种模式
A. 客户端向认证服务器进行身份认证,并要求获取访问令牌。
B. 认证服务器确认无误后,向客户端提供访问令牌。
刷新令牌
如果用户访问的时候,客户端的"访问令牌"已经过期,则需要使用"更新令牌"申请一个新的访问令牌
A. 客户端向认证服务器进行身份认证,并要求获取访问令牌。
B. 认证服务器确认无误后,返回访问令牌和一个刷新令牌。
C. 客户端通过访问令牌访问受保护资源。
D. 如果访问令牌未过期,则向客户端提供资源服务。
E. 客户端通过访问令牌访问受保护资源。
F. 如果访问令牌过期,受保护资源服务器返回Invalid Token Error。
G. 客户端得到上方的错误后,通过刷新令牌向授权服务器申请一个新的访问令牌。
H. 认证服务器确认无误后,返回访问令牌和一个刷新令牌。
优惠劵
CRMEB商城系统
关注
关注
0
点赞
踩
10
收藏
觉得还不错?
一键收藏
打赏
知道了
0
评论
详解token已过期含义及解决方 token过期是否需要重新登录
否则,客户端就重新登录即可。暂时没研究,有兴趣的朋友可以查查。详解token已过期含义及解决方 token过期是否需要重新登录Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。说明:JWT 最适合的场景是不需要服务端保存用户状态的场景,但是如果考虑到 token 注销和 token 续签的场景话,没有特别好的解决方案,大部分解决方案都给 token 加上了状态,这就有点类似 Session 认证了。
复制链接
扫一扫
VS2017 C# 获取微信token及验证access_token是否过期
02-23
本代码演示通过VS2017 C# 获取微信token及验证access_token是否过期,以及通过access_token读取云中存储的数据。
今天和大家分享一下 token 失效的处理方式
徐飞的博客
03-16
2万+
面试官:说说token失效的处理方式
参与评论
您还未登录,请先
登录
后发表或查看评论
K8S Dashboard登录Token过期问题处理
最新发布
alksjdfp32r的博客
01-03
758
K8S Dashboard登录Token过期问题处理
Android token过期刷新处理的方法示例
08-26
主要介绍了Android token过期刷新处理的方法示例,本文详细的介绍了2种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
公众号token失效,但是过期时间却没有过期,解决方案
01-20
公众号token失效,但是过期时间却没有过期,解决方案解决方案很多公众号开发的程序员们都碰到过,token的有效期明明没有过期,但是token却失效了,往往因为此错误遗漏很多信息,所以解决逻辑如下;
解决方案很多公众号开发的程序员们都碰到过,token的有效期明明没有过期,但是token却失效了,往往因为此错误遗漏很多信息,所以解决逻辑如下;
首先token是通过已经储存在数据库的access_token来获取(如果没有,那就要请求微信API来获取),之后通过token测试是否有效API,例如:
$access_token = (new CommonMoudle())->get_authori
Vue利用路由钩子token过期后跳转到登录页的实例
11-26
在Vue2.0中的路由钩子主要是用来拦截导航,让它完成跳转或前取消,可以理解为路由守卫。
分为全局导航钩子,单个路由独享的钩子,组件内钩子。
三种 类型的钩子只是用的地方不一样,都接受一个函数作为参数,函数传入三个参数,分别为to,from,next。
其中next有三个方法
(1)next(); //默认路由
(2)next(false); //阻止路由跳转
(3)next({path:’/’}); //阻止默认路由,跳转到指定路径
这里我使用了组件内钩子进行判断token过期后跳转到登录页,其他两种钩子可以去官网查看。
//路由前验证
beforeRouteEnter(to, f
关于 Token 过期问题的两种解决方案
m0_65812066的博客
01-06
2万+
手动更新token。拿到最新的token值后再重新发起刚刚因token过期的请求。2.refresh_token也有过期的时候,这时只能强行让用户自己重新登入了。手动更新token。拿到最新的token值后再跳回之前浏览的页面。时候,我们自己手动添加请求头为refresh_token。注意:1. 在请求响应器中做判断在非。请求头配置token,而。
JWT 讲解与 token 过期自动续期解决方案
weixin_43249535的博客
01-09
2万+
JWT 讲解 与 token 过期自动续期解决方案1.什么是token2.什么是JWT3.token过期自动续费方案3.1 token过期3.2 解决方案
1.什么是token
Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。
使用tok
token 过期的处理方案有哪些?
生命不息,挖坑不止
06-29
1万+
在用户登录时,除了发放一个访问令牌(Access Token)以外,再发放一个刷新令牌(Refrsh Token)。当访问令牌过期时,使用刷新令牌向服务器请求新的访问令牌。当访问令牌过期时,跳转回登录界面,让用户重新登录。这种方式的优点是可以避免用户频繁登录,但需要妥善保管刷新令牌,因为它的安全性比访问令牌更高。这种方式的优点是用户只要频繁访问,就不需要登录,但可能会增加服务器负担。用户每次使用使用访问令牌时,服务器都会更新访问令牌的过期时间。访问令牌的有效期比较短,刷新令牌的有效期比较长。
JWT的token过期自动续期(无redis)
qq_1641486826的博客
01-19
7873
思路:
由于jwt中的token过期时间是打包在token中的,用户登录以后发送给客户端以后token不能变化,那么要在用户无感知的情况下刷新token,就要在符合过期条件的情况下,在缓存一个新的token,作为续命token,再次解析不要解析客户端发送的token,要解析自己缓存的续命token
主要逻辑:
如果当前token没有超过过期时间的两倍,续期,超过了重新登录
主要代码如下:
package com.hongseng.app.config.jwtfilter;
import enums.Tok
JWT续期问题,ChatGPT解决方案
全栈行动派的博客
03-04
6728
JWT(JSON Web Token)通常是在用户登录后签发的,用于验证用户身份和授权。JWT 的有效期限(或称“过期时间”)通常是一段时间(例如1小时),过期后用户需要重新登录以获取新的JWT。然而,在某些情况下,用户可能会在JWT到期之前使用应用程序,这可能会导致应用程序不可用或需要用户重新登录。为了避免这种情况,解决方案:刷新令牌(Refresh Token)、自动延长JWT有效期
请求时token过期自动刷新token操作
10-14
主要介绍了请求时token过期自动刷新token操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
【前后端交互】token过期验证策略(express+axios)
qq_34838046的博客
10-16
1234
文章目录逻辑服务端保存tokentoken更新部分代码校验token校验中间件
逻辑
登录时,服务端生成token,保存并返回token。前端保存token
退出时,服务端删除服务端token。
发送请求时,前端携带token,服务端校验token并与保存的token对比。
校验token
token未过期,正常返回。
token接近过期,服务端重新生成token并返回,前端更新token。
token已过期,判断token与服务器保存的token是否相同。
若相同,则token正常过期,生成token,保
token 过期刷新令牌_token已过期怎么办
weixin_29109553的博客
12-24
1万+
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。token已过期的解决方法是:token已过期代表证书等过期的意思。需要重新获取code,然后得到access_token,即要重新调用授权界面,需要用refreshtoken刷新accesstoken,如果刷新取到了新的accesstoken、refreshtoken、expirein,需要用这些新的去替换掉关联表中的数据,建议...
一,用户操作过程中token过期了怎么续上?
Weiyatong的博客
03-20
4194
一,用户操作过程中token过期了怎么续上?
JWT过期处理——单token方案
weixin_44347271的博客
12-04
9322
前后端分离的项目中采用jwt作为接口的安全机制会遇到jwt过期的问题。
jwt中可以设置过期时间,即使是设置成一个月,但可能用户正上一秒还在使用,下一秒jwt过期被叫去重新登录,这是不能接受的,所以需要有处理jwt过期的机制。
在这个问题上比较常用的做法是采用双token——access token和refresh token来处理,access token用户授权,refresh token用于前者过期后获取新的access token。
这里。
我在这里记录我单token方案的思路。
用户登录时生成t
微服务jwt登录过期解决方案
酷毙了耶的博客
01-06
8259
好长时间没有上来写博客了,想你们了都有点 ,????,近期一直在忙这搭建微服务架构,为一个app提供稳定服务而忙碌,从而在搭建的过程中,遇到了jwt过期以及,恶意刷新jwt的问题,今天主要是针对这两个问题展开教程.话不多说,先说一下什么是jwt
...
JWT token过期自动续期解决方案
热门推荐
chen子健
08-29
5万+
JWT
JWT全称JSON Web Token,由三部分组成header(头部,用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等)、payload(载荷,就是存放有效信息的地方,在这一部分中存放过期时间)和signature(签证,签证信息)。
token
token就是后端生成的JWT字符串值,在前后端分离中,token是前端访问后端接口的合法身份、权限的凭证。
token过期...
关于解决token过期失效问题
xiaofiy的博客
06-15
3万+
关于解决token过期失效问题,用户对token无感知(实现免登陆)一、先认识下token二、整体思路三、实现步骤1.理清各个文件作用2.路由导航守卫3.封装localStorage方法4.vuex5.封装axios 实现请求拦截器和响应拦截器(重点部分)四、小结
一、先认识下token
二、整体思路
三、实现步骤
1.理清各个文件作用
2.路由导航守卫
设置用户有无token访问主页,并且登录成功回到目标页
import Vue from 'vue'
import VueRouter from 'v
js-cookie设置token过期时间_详解ASP.NET Core Web Api之JWT刷新Token_实用技巧
06-02
好的,针对您的问题,我可以给您一些关于js-cookie设置token过期时间以及ASP.NET Core Web API之JWT刷新Token的实用技巧。
首先,关于js-cookie设置token过期时间,可以通过以下代码实现:
```javascript
// 设置cookie过期时间为1天
Cookies.set('token', 'your_token_value', { expires: 1 });
```
其中,`expires`属性表示过期时间,单位为天。
其次,关于ASP.NET Core Web API之JWT刷新Token,可以采用以下方法:
在JWT的payload中加入`exp`属性,表示token的过期时间。当token过期后,客户端需要向服务器发送请求,获取新的token。服务器对于过期的token,可以返回一个特定的状态码,比如401 Unauthorized。客户端接收到该状态码后,可以重新向服务器发送请求,获取新的token。
同时,在服务器端需要实现一个刷新token的接口,接口的功能是根据旧的token生成新的token。具体实现可以参考以下代码:
```csharp
[HttpPost("refresh-token")]
public IActionResult RefreshToken([FromBody] string token)
{
// 验证旧的token是否有效
var principal = _jwtService.GetPrincipalFromExpiredToken(token);
if (principal == null)
return BadRequest("Invalid token");
// 生成新的token
var newToken = _jwtService.GenerateToken(principal.Claims);
return Ok(newToken);
}
```
其中,`_jwtService`表示JWT的服务类,`GetPrincipalFromExpiredToken`方法用于从过期的token中获取`ClaimsPrincipal`对象,`GenerateToken`方法用于生成新的token。
希望以上内容对您有所帮助。如有其他问题,请随时提问。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
CRMEB商城系统
CSDN认证博客专家
CSDN认证企业博客
码龄2年
西安众邦网络科技有限公司
377
原创
2万+
周排名
5218
总排名
52万+
访问
等级
5279
积分
744
粉丝
825
获赞
42
评论
1340
收藏
私信
关注
热门文章
企业微信接口错误代码大全
18828
微信支付的收款功能被限制了怎么办,收款受限制怎么解除?
18788
MySQL8超详细安装教程
14771
网站出现403 Forbidden错误的原因以及怎么解决的方法
14472
彻底搞懂ESLint与Prettier在vscode中的代码自动格式化
12193
最新评论
APP打包教程(使用HBuilder X工具打包uni-app)
努力搬砖的小码:
打包APP必须要域名吗
vue + vue-office 实现多种文件(docx、excel、pdf)的预览
一袭锦衣:
docx写本地地址,显示不出来文档
Access-Control-Allow-Origin跨域解决及详细介绍
noonsz:
Access-Control-Allow-Credentials 含义说的不正确模糊。它用于指定在跨源(CORS)请求中,是否允许浏览器发送凭证(credentials)。这些凭证包括cookies以及HTTP认证相关的信息。当此头部的值设置为 "true" 时,它允许前端在进行跨域请求时携带凭证信息。这意味着浏览器可以在跨域请求中包含cookies和HTTP认证信息。
在这种情况下,服务器可以接收并使用这些凭证,例如进行会话管理或者保持用户的登录状态。
由于包含凭证的跨域请求可能涉及敏感数据,因此使用Access-Control-Allow-Credentials: true需要谨慎。特别是,当这个头部为 "true" 时,Access-Control-Allow-Origin 不能设置为 "*",因为这会导致任意第三方网站都可能携带用户的凭证发起请求。而应该设置为确切的、可信的来源域名。
credentials 通常包括以下几种:
Cookies, HTTP Authentication,SSL/TLS Client Certificates
最后再解释说明一下 SSL/TLS Client Certificates 是一种基于证书的认证机制,用于在SSL/TLS层进行身份验证。客户端将其证书发送给服务器进行认证。
获取微信服务器IP地址
HrYy2662:
这个服务器地址能用来做什么呢?
vue + vue-office 实现多种文件(docx、excel、pdf)的预览
奥拓蛋/:
引入依赖会报错
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
掌握Vue的20种写法,让开发效率翻倍!
企业如何利用微信创造持续增长的私域流量
Vue3自定义Hooks一键换肤教程
2024年37篇
2023年316篇
2022年38篇
目录
目录
最新文章
掌握Vue的20种写法,让开发效率翻倍!
企业如何利用微信创造持续增长的私域流量
Vue3自定义Hooks一键换肤教程
2024年37篇
2023年316篇
2022年38篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
CRMEB商城系统
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
对于token的认证,如何保证token的及时刷新? - 知乎
对于token的认证,如何保证token的及时刷新? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册Web 开发JSON Web Token(JWT)token对于token的认证,如何保证token的及时刷新?1,在拦截器里对将要过期的token 的进行刷新。(一个页面可能n个请求同时发出,也就是说 refresh_token 要支持多个,这个不算最好的解决…显示全部 关注者26被浏览88,275关注问题写回答邀请回答好问题添加评论分享4 个回答默认排序张少林同学 关注前言记录一下前后端分离下————token超时刷新策略!需求场景昨天发了一篇记录 前后端分离应用——用户信息传递 中介绍了token认证机制,跟几位群友讨论了下,有些同学有这么一个疑惑:token失效了,应该怎么做?强制定向到登录页?其实理论上如果是活跃用户,token失效后,假如用户正在操作表单,此时突然定向到登录页面,那用户体验太差了。实现目标延长token过期时间活跃用户在token过期时,在用户无感知的情况下动态刷新token,做到一直在线状态不活跃用户在token过期时,直接定向到登录页登录返回字段如何签发token,请看上一篇推文,这里不做过多介绍。先看看登录接口返回的数据如下: 1@Data
2public class LoginVo implements Serializable {
3
4 private static final long serialVersionUID = 6711396581310450023L;
5
6 //...省略部分业务字段
7
8 /**
9 * token令牌 过期时间默认15day
10 */
11 private String jwt;
12
13 /**
14 * 刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token
15 */
16 private String refreshJwt;
17
18 /**
19 * token过期时间戳
20 */
21 private Long tokenPeriodTime;
22
23}
具体返回字段的意义请看注释,这里再简要说明:jwt:用户正常访问接口时提交的token,过期时间设置长一些,15day吧refreshJwt:刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token时候提交后台验证tokenPeriodTime:token过期时间戳,前端每次调用接口前需要主动判断是否已经过期,如果过期则提交refreshJwt访问token刷新的接口进行刷新动态刷新token前端检测到token过期后,携带refreshJwt访问后台刷新token的接口,服务端在拦截器中依然对refreshJwt进行解析鉴权假如refreshJwt也过期了,提示登录过期,强制跳转登录页假如refreshJwt还在有效期,则签发新的token返回,前端使用最新的token进行接口请求总结如果是活跃用户,那么允许他在refreshJwt过期时间与token过期时间的差值这段时间内,不停的动态刷新token,使其做到无感知的状态下一直保持登录状态如果用户不活跃,在refreshJwt过期时间到了,依然没有使用系统,那么将判定为不活跃用户,此时应当重定向到登录页了最后篇幅较短,主要是延续上一篇 前后端分离应用——用户信息传递 遗留问题做一下总结。如果你有更好的做法,欢迎留言告知我,谢谢啦。后续会不定期更新原创文章,欢迎关注公众号 「张少林同学」!编辑于 2019-01-22 12:22赞同 167 条评论分享收藏喜欢收起编程乐趣 关注这是我之前分享在星球里面的课程,下面整理下,分享下这个无感刷新Token技术方案。我们都知道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,并重新发起第二次用户搜索请求,但对用户来说是透明、毫无察觉的。好了,今天就分享到这了。顺便分享一个资料:最后,如果对你有帮助,欢迎点赞、收藏!- End -发布于 2024-02-02 23:28赞同 11 条评论分享收藏喜欢收起
详解token已过期含义及解决方 token过期是否需要重新登录-CSDN博客
>详解token已过期含义及解决方 token过期是否需要重新登录-CSDN博客
详解token已过期含义及解决方 token过期是否需要重新登录
最新推荐文章于 2024-01-03 15:56:53 发布
CRMEB商城系统
最新推荐文章于 2024-01-03 15:56:53 发布
阅读量1w
收藏
10
点赞数
文章标签:
java
数据库
redis
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_64051447/article/details/130860602
版权
详解token已过期含义及解决方 token过期是否需要重新登录Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。单一服务器架构该架
Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。
单一服务器架构
该架构下后端只有一台服务器提供服务。
认证授权流程:
1.Web应用中设置拦截器对所有请求进行拦截,如果校验不通过则跳转登陆重新认证
2.客户端发起认证请求,传入用户名密码
3.通过验证后,应用在服务器上将用户信息存入session中,并将session id返回给客户端
4.客户端将session id存在本地cookie或local storage中,再次访问时传入session id
5.Web应用根据session id对比服务器的session数据,确认用户身份
适合场景
这种模式只适合单服务器的场景
常用实现
shiro ;自定义注解 + 拦截器/AOP方案;filter方案等
缺陷
如果是分布式服务或跨域体系架构的系统则会出现session无法共享的问题。
如何解决
解决方案有两种,第一种是将session统一存放,实现分布式session共享,第二种方案是客户端生成token
分布式服务架构
分布式服务架构下,后端的服务器由一台变成了多台。
Session共享方案
认证授权流程:
1.使用nginx做负载均衡,多台web应用
2.客户端发起认证请求,根据策略到其中一台web
3.通过验证后,服务端将用户的信息存入持久化层,例如redis缓存数据库,再生成token令牌
4.并将生成的token返回客户端,存入客户端缓存。
5.客户端再次访问web,根据策略路由到其中一台,web应用查询持久化层,根据带入的token查询用户登陆信息,确认身份。
适合场景
并发量不高的分布式应用
常用实现
shiro ;自定义注解 + 拦截器/AOP方案;filter方案等
缺陷
1、这种方案的缺陷在于依赖于持久层的数据库如redis,会有单点风险,如果持久层失败,整个认证体系都会挂掉;
2、每一次调用都需要访问持久化层进行验证,会给持久化层造成压力,在高并发场景,持久化层容易成为瓶颈;
如何解决
持久层的数据库如redis做高可用和集群。
客户端token方案
认证授权流程:
1.客户端发起认证请求,根据策略到其中一台web
2.通过验证后,服务端将用户登陆信息封装成token(token本身可以自解释)返回给客户端,不存储在服务端
3.客户端将返回的完整信息存入缓存。
4.客户端再次访问web,根据策略路由到其中一台,带入登陆信息,服务端根据信息确认身份。
适合场景
优势在于服务端不保存用户会话数据,服务端无状态,不用去持久层查询从而增加了效率,适合一次性验证、restful api 的无状态认证、并发量较高的分布式应用等
常用实现
jwt
缺陷
token一旦下发便不受服务端控制,如果发生token泄露,服务器也只能任其蹂躏,在其未过期期间不能有任何措施,同时存在以下两个问题:
1、失效问题,因为token是存放在客户端的,服务端无法主动让token失效,比如踢人下线、用户权限发生变化等场景就实现不了
2、续签问题,token 有效期一般都建议设置的不太长, token 过期后用户需要重新登录,导致用户需要频繁登录
如何解决
针对失效问题:
① 将 token 存入内存数据库:将 token 存入 DB 或redis中。如果需要让某个 token 失效就直接从 redis 中删除这个 token 即可。但是,这样会导致每次使用 token 发送请求都要先从redis中查询 token 是否存在的步骤,而且违背了 JWT 的无状态原则,不可取。
② 黑名单机制:使用内存数据库比如 redis 维护一个黑名单,如果想让某个 token 失效的话就直接将这个 token 加入到 黑名单 即可。然后,每次使用 token 进行请求的话都会先判断这个 token 是否存在于黑名单中。
针对续签问题:
① 类似于 Session 认证中的做法: 假设服务端给的 token 有效期设置为30分钟,服务端每次进行校验时,如果发现 token 的有效期马上快过期了,服务端就重新生成 token 给客户端。客户端每次请求都检查新旧token,如果不一致,则更新本地的token。这种做法的问题是仅仅在快过期的时候请求才会更新 token ,对客户端不是很友好。每次请求都返回新 token :这种方案的的思路很简单,但是,很明显,开销会比较大。
② 用户登录返回两个 token :第一个是 acessToken ,它的过期时间比较短,不如1天;另外一个是 refreshToken 它的过期时间更长一点比如为10天。客户端登录后,将 accessToken和refreshToken 保存在客户端本地,每次访问将 accessToken 传给服务端。服务端校验 accessToken 的有效性,如果过期的话,就将 refreshToken 传给服务端。如果 refreshToken 有效,服务端就生成新的 accessToken 给客户端。否则,客户端就重新登录即可。
说明:JWT 最适合的场景是不需要服务端保存用户状态的场景,但是如果考虑到 token 注销和 token 续签的场景话,没有特别好的解决方案,大部分解决方案都给 token 加上了状态,这就有点类似 Session 认证了。
微服务架构
微服务架构下服务端根据业务拆分为多个服务,除了公司内部服务外,外部客户或者第三方也通过api网关统一转发请求,在这个阶段系统需要提供跨系统单点登录、第三方授权登录等基础能力。在这种架构下后端建立单独的认证授权中心。 目前实现统一身份认证和授权的技术手段较多,总体可以归纳为以下几类。
传统的 Cookie + Session 解决方案 ,有状态会话模式
认证授权流程:
同分布式服务架构中的“Session共享方案”
适合场景:
同分布式服务架构中的“Session共享方案”
常用实现:
同分布式服务架构中的“Session共享方案”
缺陷:
分布式 Session 是老牌的成熟解决方案,但因其状态化通信的特性与微服务提倡的API导向无状态通信相互违背,且共享式存储存在安全隐患,因此微服务一般不太采用
JWT+网关撤销令牌方案,无状态交互模式
认证授权流程:
同分布式服务架构中的“客户端token方案”,只是在该基础上,加上API网关令牌失效和令牌续签的机制,参考分布式服务架构中的“Session共享方案”的“如何解决”部分。
适合场景:
同分布式服务架构中的“客户端token方案”
常用实现:
同分布式服务架构中的“客户端token方案”
缺陷:
同分布式服务架构中的“客户端token方案”
JWT + OAutstrong.0 +CAS方案
CAS是单点登录的解决方案,单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS共涉及角色有:CAS Client(下文提到的系统A等)、User、CAS Server(认证中心)。CAS 是一个认证框架,其本身定义了一套灵活完整的认证流程,但其兼容主流的认证和授权协议如 OAutstrong、SAML、OpenID 等,因此一般采用 CAS + OAutstrong 的方案实现 SSO 和授权登录。
认证授权流程:
1.用户访问系统A;
2.系统A发现用户没有登录,也没有ticket,重定向到认证中心;有ticket跳转 第7步;
3.认证中心发现用户并未登录,展示登录页面;
4.用户登录;
5.认证中心登录成功,带着生成的ticket,重定向到之前的系统A页面;
6.系统A检查登录,还是未登录,但存在ticket。系统A带着ticket和认证中心进行校验;
7.认证中心返回对应的用户名;
8.系统A检查返回的用户名是否只有一个且不为空,若是,则返回给用户指定的资源信息;若不是,则跳转 第2步。
常用实现
spring security + CAS
OAutstrong.0协议考虑到了微服务认证中的方方面面,提供的多种授权模式。这种方案的优点是安全性好,是业内成熟的给第三方提供授权登录解决方案,但是实现成本和复杂度高。 OAutstrong.0提供了4种授权模式,能够适应多种场景,作为基于令牌的安全框架,可以广泛用于需要统一身份认证和授权的场景。 在 OAutstrong.0 的实施过程中,一般会采用 JWT 作为令牌的主要标准。以文章分享举个例子,你在(登录后)浏览某论坛时,遇到了一篇好文章,想要分享给大家时,你需要登录(扫码或者登录用户名密码)第三方账户如来完成分享。
OAutstrong.0还有个替代方案,OIDC,它是OpenID Connect的简称,OIDC=(Identity, Authentication) + OAuth 2.0。它在OAutstrong上构建了一个身份层,是一个基于OAutstrong协议的身份认证标准协议。暂时没研究,有兴趣的朋友可以查查。
认证授权流程:
1、在点击分享链接时,主服务器会直接(接口)请求第三方服务器,第三方服务器会校验主服务器上的用户此时是否授权给自己(第三方);
2、没有授权信息,用户登录(扫描或者密码)。
3、主服务器拿着用户的登录信息去第三方确认认证授权(密码是否正确、是否授权)。
4、认证失败,密码错误。(重新登录)
5、认证成功(确认授权),第三方认证服务会返回的授权码。
6、主服务器带着授权码请求第三方资源服务器,第三方资源服务器会返回指定的URI(分享界面)。
7、用户操作分享操作(填写自己的话语),点击分享按钮完成。
常用实现
spring security +OAutstrong.0
OAutstrong.0提供了4种授权模式,如下:
授权码模式
授权码模式相对其他三个模式来说是功能最完整,流程最安全严谨的授权方式。它的特点是通过客户端的后台服务器与服务提供商的认证服务器进行交互:
A. 用户访问客户端,客户端将用户导向认证服务器,需要携带客户端ID凭证和重定向URI。
B. 用户选择是否给予客户端授权。
C. 假设用户给予授权,认证服务器将用户导向事先指定的重定向URI,同时附上一个授权码。
D. 客户端收到授权码后,携带事先指定的重定向URI和授权码向认证服务器申请令牌。
E. 认证服务器核对授权码和重定向URI,确认无误后,向客户端颁发访问令牌(access token)和刷新令牌(refresh token)。
这里的resource owner代表客户,user-agent代表客户使用的访问工具如浏览器或App,client指第三方客户端
简化模式
简化模式不通过服务端程序来完成,比授权码模式减少了“授权码”这个步骤,直接由浏览器发送请求获取令牌,令牌对访问者是可见的,且客户端不需要认证,这种模式一般用于无后端应用,如手机/桌面客户端程序、浏览器插件
A. 用户访问客户端,客户端将用户导向认证服务器,需要携带客户端ID凭证和重定向URI。
B. 用户选择是否给予客户端授权。
C. 假设用户给予授权,认证服务器将用户导向事先指定的重定向URI,并在URI的Hash部分包含了访问令牌(Fragment)。
D. 浏览器向资源服务器发出请求,其中不包含事先收到的Hash部分(Fragment)。
E. 资源服务器返回一段脚本,其中包含的代码可以获取Hash部分中的令牌。
F. 浏览器执行事先获取的脚本,提取出令牌
G. 浏览器将令牌发送给客户端。
密码模式
密码模式中,用户向客户端提供用户名和密码,客户端使用这些信息,直接向认证服务器索要授权。这种模式违背了前面提到的微服务安全要解决的问题(不暴露用户名和密码),但是在一些用户对客户端高度信任的情况下,例如公司内部软件间的授权下,使用这种模式也是适用的
A. 用户向客户端提供用户名和密码。
B. 客户端将用户名和密码发送给认证服务器,向认证服务器索要令牌。
C. 认证服务器确认无误后,向客户端提供访问令牌。
客户端模式
客户端模式是客户端以自己的名义去授权服务器申请授权令牌,并不是完全意义上的授权。一般不适用这种模式
A. 客户端向认证服务器进行身份认证,并要求获取访问令牌。
B. 认证服务器确认无误后,向客户端提供访问令牌。
刷新令牌
如果用户访问的时候,客户端的"访问令牌"已经过期,则需要使用"更新令牌"申请一个新的访问令牌
A. 客户端向认证服务器进行身份认证,并要求获取访问令牌。
B. 认证服务器确认无误后,返回访问令牌和一个刷新令牌。
C. 客户端通过访问令牌访问受保护资源。
D. 如果访问令牌未过期,则向客户端提供资源服务。
E. 客户端通过访问令牌访问受保护资源。
F. 如果访问令牌过期,受保护资源服务器返回Invalid Token Error。
G. 客户端得到上方的错误后,通过刷新令牌向授权服务器申请一个新的访问令牌。
H. 认证服务器确认无误后,返回访问令牌和一个刷新令牌。
优惠劵
CRMEB商城系统
关注
关注
0
点赞
踩
10
收藏
觉得还不错?
一键收藏
打赏
知道了
0
评论
详解token已过期含义及解决方 token过期是否需要重新登录
否则,客户端就重新登录即可。暂时没研究,有兴趣的朋友可以查查。详解token已过期含义及解决方 token过期是否需要重新登录Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。说明:JWT 最适合的场景是不需要服务端保存用户状态的场景,但是如果考虑到 token 注销和 token 续签的场景话,没有特别好的解决方案,大部分解决方案都给 token 加上了状态,这就有点类似 Session 认证了。
复制链接
扫一扫
Vue利用路由钩子token过期后跳转到登录页的实例
11-26
在Vue2.0中的路由钩子主要是用来拦截导航,让它完成跳转或前取消,可以理解为路由守卫。
分为全局导航钩子,单个路由独享的钩子,组件内钩子。
三种 类型的钩子只是用的地方不一样,都接受一个函数作为参数,函数传入三个参数,分别为to,from,next。
其中next有三个方法
(1)next(); //默认路由
(2)next(false); //阻止路由跳转
(3)next({path:’/’}); //阻止默认路由,跳转到指定路径
这里我使用了组件内钩子进行判断token过期后跳转到登录页,其他两种钩子可以去官网查看。
//路由前验证
beforeRouteEnter(to, f
今天和大家分享一下 token 失效的处理方式
徐飞的博客
03-16
2万+
面试官:说说token失效的处理方式
参与评论
您还未登录,请先
登录
后发表或查看评论
K8S Dashboard登录Token过期问题处理
最新发布
alksjdfp32r的博客
01-03
758
K8S Dashboard登录Token过期问题处理
公众号token失效,但是过期时间却没有过期,解决方案
01-20
公众号token失效,但是过期时间却没有过期,解决方案解决方案很多公众号开发的程序员们都碰到过,token的有效期明明没有过期,但是token却失效了,往往因为此错误遗漏很多信息,所以解决逻辑如下;
解决方案很多公众号开发的程序员们都碰到过,token的有效期明明没有过期,但是token却失效了,往往因为此错误遗漏很多信息,所以解决逻辑如下;
首先token是通过已经储存在数据库的access_token来获取(如果没有,那就要请求微信API来获取),之后通过token测试是否有效API,例如:
$access_token = (new CommonMoudle())->get_authori
VS2017 C# 获取微信token及验证access_token是否过期
02-23
本代码演示通过VS2017 C# 获取微信token及验证access_token是否过期,以及通过access_token读取云中存储的数据。
Android token过期刷新处理的方法示例
08-26
主要介绍了Android token过期刷新处理的方法示例,本文详细的介绍了2种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
关于 Token 过期问题的两种解决方案
m0_65812066的博客
01-06
2万+
手动更新token。拿到最新的token值后再重新发起刚刚因token过期的请求。2.refresh_token也有过期的时候,这时只能强行让用户自己重新登入了。手动更新token。拿到最新的token值后再跳回之前浏览的页面。时候,我们自己手动添加请求头为refresh_token。注意:1. 在请求响应器中做判断在非。请求头配置token,而。
JWT 讲解与 token 过期自动续期解决方案
weixin_43249535的博客
01-09
2万+
JWT 讲解 与 token 过期自动续期解决方案1.什么是token2.什么是JWT3.token过期自动续费方案3.1 token过期3.2 解决方案
1.什么是token
Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。
使用tok
token 过期的处理方案有哪些?
生命不息,挖坑不止
06-29
1万+
在用户登录时,除了发放一个访问令牌(Access Token)以外,再发放一个刷新令牌(Refrsh Token)。当访问令牌过期时,使用刷新令牌向服务器请求新的访问令牌。当访问令牌过期时,跳转回登录界面,让用户重新登录。这种方式的优点是可以避免用户频繁登录,但需要妥善保管刷新令牌,因为它的安全性比访问令牌更高。这种方式的优点是用户只要频繁访问,就不需要登录,但可能会增加服务器负担。用户每次使用使用访问令牌时,服务器都会更新访问令牌的过期时间。访问令牌的有效期比较短,刷新令牌的有效期比较长。
JWT的token过期自动续期(无redis)
qq_1641486826的博客
01-19
7873
思路:
由于jwt中的token过期时间是打包在token中的,用户登录以后发送给客户端以后token不能变化,那么要在用户无感知的情况下刷新token,就要在符合过期条件的情况下,在缓存一个新的token,作为续命token,再次解析不要解析客户端发送的token,要解析自己缓存的续命token
主要逻辑:
如果当前token没有超过过期时间的两倍,续期,超过了重新登录
主要代码如下:
package com.hongseng.app.config.jwtfilter;
import enums.Tok
JWT续期问题,ChatGPT解决方案
全栈行动派的博客
03-04
6728
JWT(JSON Web Token)通常是在用户登录后签发的,用于验证用户身份和授权。JWT 的有效期限(或称“过期时间”)通常是一段时间(例如1小时),过期后用户需要重新登录以获取新的JWT。然而,在某些情况下,用户可能会在JWT到期之前使用应用程序,这可能会导致应用程序不可用或需要用户重新登录。为了避免这种情况,解决方案:刷新令牌(Refresh Token)、自动延长JWT有效期
请求时token过期自动刷新token操作
10-14
主要介绍了请求时token过期自动刷新token操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Mac上修复Gitee错误Oauth: Access token is expired
bigfc的博客
10-04
2094
Mac系统中使用Android Studio操作Gitee,出现Access token is expired异常修复
token过期机制的问题
qq_46940224的博客
10-15
3729
浅谈一下token过期机制的问题
token 过期解决
qq_34867424的博客
10-24
1万+
vue如何在token过期之后跳转到登录页面,且不影响其他无需携带token的接口数据访问
事情是这样的,最近做了一个类似于商城的项目。本来测试是没有问题的,后来过了大概三四天的时间没有在浏览器中打开过,再打开以后,在未登录情况下打开商城首页报了一大堆的错误。
出现问题的原因
默认情况下商城首页,无需登录即可打开,也就是说访问后台接口不需要携带token。但是用户在上一次登录系统访问页面后,没有...
JWT过期处理——单token方案
weixin_44347271的博客
12-04
9322
前后端分离的项目中采用jwt作为接口的安全机制会遇到jwt过期的问题。
jwt中可以设置过期时间,即使是设置成一个月,但可能用户正上一秒还在使用,下一秒jwt过期被叫去重新登录,这是不能接受的,所以需要有处理jwt过期的机制。
在这个问题上比较常用的做法是采用双token——access token和refresh token来处理,access token用户授权,refresh token用于前者过期后获取新的access token。
这里。
我在这里记录我单token方案的思路。
用户登录时生成t
微服务jwt登录过期解决方案
酷毙了耶的博客
01-06
8259
好长时间没有上来写博客了,想你们了都有点 ,????,近期一直在忙这搭建微服务架构,为一个app提供稳定服务而忙碌,从而在搭建的过程中,遇到了jwt过期以及,恶意刷新jwt的问题,今天主要是针对这两个问题展开教程.话不多说,先说一下什么是jwt
...
JWT token过期自动续期解决方案
热门推荐
chen子健
08-29
5万+
JWT
JWT全称JSON Web Token,由三部分组成header(头部,用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等)、payload(载荷,就是存放有效信息的地方,在这一部分中存放过期时间)和signature(签证,签证信息)。
token
token就是后端生成的JWT字符串值,在前后端分离中,token是前端访问后端接口的合法身份、权限的凭证。
token过期...
关于解决token过期失效问题
xiaofiy的博客
06-15
3万+
关于解决token过期失效问题,用户对token无感知(实现免登陆)一、先认识下token二、整体思路三、实现步骤1.理清各个文件作用2.路由导航守卫3.封装localStorage方法4.vuex5.封装axios 实现请求拦截器和响应拦截器(重点部分)四、小结
一、先认识下token
二、整体思路
三、实现步骤
1.理清各个文件作用
2.路由导航守卫
设置用户有无token访问主页,并且登录成功回到目标页
import Vue from 'vue'
import VueRouter from 'v
js-cookie设置token过期时间_详解ASP.NET Core Web Api之JWT刷新Token_实用技巧
06-02
好的,针对您的问题,我可以给您一些关于js-cookie设置token过期时间以及ASP.NET Core Web API之JWT刷新Token的实用技巧。
首先,关于js-cookie设置token过期时间,可以通过以下代码实现:
```javascript
// 设置cookie过期时间为1天
Cookies.set('token', 'your_token_value', { expires: 1 });
```
其中,`expires`属性表示过期时间,单位为天。
其次,关于ASP.NET Core Web API之JWT刷新Token,可以采用以下方法:
在JWT的payload中加入`exp`属性,表示token的过期时间。当token过期后,客户端需要向服务器发送请求,获取新的token。服务器对于过期的token,可以返回一个特定的状态码,比如401 Unauthorized。客户端接收到该状态码后,可以重新向服务器发送请求,获取新的token。
同时,在服务器端需要实现一个刷新token的接口,接口的功能是根据旧的token生成新的token。具体实现可以参考以下代码:
```csharp
[HttpPost("refresh-token")]
public IActionResult RefreshToken([FromBody] string token)
{
// 验证旧的token是否有效
var principal = _jwtService.GetPrincipalFromExpiredToken(token);
if (principal == null)
return BadRequest("Invalid token");
// 生成新的token
var newToken = _jwtService.GenerateToken(principal.Claims);
return Ok(newToken);
}
```
其中,`_jwtService`表示JWT的服务类,`GetPrincipalFromExpiredToken`方法用于从过期的token中获取`ClaimsPrincipal`对象,`GenerateToken`方法用于生成新的token。
希望以上内容对您有所帮助。如有其他问题,请随时提问。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
CRMEB商城系统
CSDN认证博客专家
CSDN认证企业博客
码龄2年
西安众邦网络科技有限公司
377
原创
2万+
周排名
5218
总排名
52万+
访问
等级
5279
积分
744
粉丝
825
获赞
42
评论
1340
收藏
私信
关注
热门文章
企业微信接口错误代码大全
18828
微信支付的收款功能被限制了怎么办,收款受限制怎么解除?
18788
MySQL8超详细安装教程
14771
网站出现403 Forbidden错误的原因以及怎么解决的方法
14472
彻底搞懂ESLint与Prettier在vscode中的代码自动格式化
12193
最新评论
APP打包教程(使用HBuilder X工具打包uni-app)
努力搬砖的小码:
打包APP必须要域名吗
vue + vue-office 实现多种文件(docx、excel、pdf)的预览
一袭锦衣:
docx写本地地址,显示不出来文档
Access-Control-Allow-Origin跨域解决及详细介绍
noonsz:
Access-Control-Allow-Credentials 含义说的不正确模糊。它用于指定在跨源(CORS)请求中,是否允许浏览器发送凭证(credentials)。这些凭证包括cookies以及HTTP认证相关的信息。当此头部的值设置为 "true" 时,它允许前端在进行跨域请求时携带凭证信息。这意味着浏览器可以在跨域请求中包含cookies和HTTP认证信息。
在这种情况下,服务器可以接收并使用这些凭证,例如进行会话管理或者保持用户的登录状态。
由于包含凭证的跨域请求可能涉及敏感数据,因此使用Access-Control-Allow-Credentials: true需要谨慎。特别是,当这个头部为 "true" 时,Access-Control-Allow-Origin 不能设置为 "*",因为这会导致任意第三方网站都可能携带用户的凭证发起请求。而应该设置为确切的、可信的来源域名。
credentials 通常包括以下几种:
Cookies, HTTP Authentication,SSL/TLS Client Certificates
最后再解释说明一下 SSL/TLS Client Certificates 是一种基于证书的认证机制,用于在SSL/TLS层进行身份验证。客户端将其证书发送给服务器进行认证。
获取微信服务器IP地址
HrYy2662:
这个服务器地址能用来做什么呢?
vue + vue-office 实现多种文件(docx、excel、pdf)的预览
奥拓蛋/:
引入依赖会报错
最新文章
掌握Vue的20种写法,让开发效率翻倍!
企业如何利用微信创造持续增长的私域流量
Vue3自定义Hooks一键换肤教程
2024年37篇
2023年316篇
2022年38篇
目录
目录
最新文章
掌握Vue的20种写法,让开发效率翻倍!
企业如何利用微信创造持续增长的私域流量
Vue3自定义Hooks一键换肤教程
2024年37篇
2023年316篇
2022年38篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
CRMEB商城系统
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
关于Token 自动续期的解决方案 - 知乎
关于Token 自动续期的解决方案 - 知乎首发于JAVA日知录切换模式写文章登录/注册关于Token 自动续期的解决方案JAVA日知录前言在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个jwt token。前端(如vue)在接收到jwt token后会将token存储到LocalStorage中。后续每次请求都会将此token放在请求头中传递到后端服务,后端服务会有一个过滤器对token进行拦截校验,校验token是否过期,如果token过期则会让前端跳转到登录页面重新登录。因为jwt token中一般会包含用户的基本信息,为了保证token的安全性,一般会将token的过期时间设置的比较短。但是这样又会导致前端用户需要频繁登录(token过期),甚至有的表单比较复杂,前端用户在填写表单时需要思考较长时间,等真正提交表单时后端校验发现token过期失效了不得不跳转到登录页面。如果真发生了这种情况前端用户肯定是要骂人的,用户体验非常不友好。本篇内容就是在前端用户无感知的情况下实现token的自动续期,避免频繁登录、表单填写内容丢失情况的发生。实现原理jwt token自动续期的实现原理如下:登录成功后将用户生成的 jwt token 作为key、value存储到cache缓存里面 (这时候key、value值一样),将缓存有效期设置为 token有效时间的2倍。当该用户再次请求时,通过后端的一个 jwt Filter 校验前端token是否是有效token,如果前端token无效表明是非法请求,直接抛出异常即可;根据规则取出cache token,判断cache token是否存在,此时主要分以下几种情况:cache token 不存在这种情况表明该用户账户空闲超时,返回用户信息已失效,请重新登录。cache token 存在,则需要使用jwt工具类验证该cache token 是否过期超时,不过期无需处理。过期则表示该用户一直在操作只是token失效了,后端程序会给token对应的key映射的value值重新生成jwt token并覆盖value值,该缓存生命周期重新计算。实现逻辑的核心原理:前端请求Header中设置的token保持不变,校验有效性以缓存中的token为准。代码实现(伪码)登录成功后给用户签发token,并设置token的有效期...
SysUser sysUser = userService.getUser(username,password);
if(null !== sysUser){
String token = JwtUtil.sign(sysUser.getUsername(),
sysUser.getPassword());
}
...
public static String sign(String username, String secret) {
//设置token有效期为30分钟
Date date = new Date(System.currentTimeMillis() + 30 * 60 * 1000);
//使用HS256生成token,密钥则是用户的密码
Algorithm algorithm = Algorithm.HMAC256(secret);
// 附带username信息
return JWT.create().withClaim("username", username).withExpiresAt(date).sign(algorithm);
}
将token存入redis,并设定过期时间,将redis的过期时间设置成token过期时间的两倍Sting tokenKey = "sys:user:token" + token;
redisUtil.set(tokenKey, token);
redisUtil.expire(tokenKey, 30 * 60 * 2);
过滤器校验token,校验token有效性public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
//从header中获取token
String token = httpServletRequest.getHeader("token")
if(null == token){
throw new RuntimeException("illegal request,token is necessary!")
}
//解析token获取用户名
String username = JwtUtil.getUsername(token);
//根据用户名获取用户实体,在实际开发中从redis取
User user = userService.findByUser(username);
if(null == user){
throw new RuntimeException("illegal request,token is Invalid!")
}
//校验token是否失效,自动续期
if(!refreshToken(token,username,user.getPassword())){
throw new RuntimeException("illegal request,token is expired!")
}
...
}
实现token的自动续期public boolean refreshToken(String token, String userName, String passWord) {
Sting tokenKey = "sys:user:token" + token ;
String cacheToken = String.valueOf(redisUtil.get(tokenKey));
if (StringUtils.isNotEmpty(cacheToken)) {
// 校验token有效性,注意需要校验的是缓存中的token
if (!JwtUtil.verify(cacheToken, userName, passWord)) {
String newToken = JwtUtil.sign(userName, passWord);
// 设置超时时间
redisUtil.set(tokenKey, newToken) ;
redisUtil.expire(tokenKey, 30 * 60 * 2);
}
return true;
}
return false;
}
...
public static boolean verify(String token, String username, String secret) {
try {
// 根据密码生成JWT效验器
Algorithm algorithm = Algorithm.HMAC256(secret);
JWTVerifier verifier = JWT.require(algorithm).withClaim("username", username).build();
// 效验TOKEN
DecodedJWT jwt = verifier.verify(token);
return true;
} catch (Exception exception) {
return false;
}
}
本文中jwt的相关操作是基于 com.auth0.java-jwt 实现,大家可以通过阅读原文获取 JwtUtil 工具类。小结jwt token实现逻辑的核心原理是 前端请求Header中设置的token保持不变,校验有效性以缓存中的token为准,千万不要直接校验Header中的token。实现原理部分大家好好体会一下,思路比实现更重要!如果本文对你有帮助,别忘记给我个三连:点赞,转发,评论。咱们下期见!收藏 等于白嫖,点赞 才是真情!这里为大家准备了一份小小的礼物,关注公众号,输入如下代码,即可获得百度网盘地址,无套路领取!001:《程序员必读书籍》002:《从无到有搭建中小型互联网公司后台服务架构与运维架构》003:《互联网企业高并发解决方案》004:《互联网架构教学视频》006:《SpringBoot实现点餐系统》007:《SpringSecurity实战视频》008:《Hadoop实战教学视频》009:《腾讯2019Techo开发者大会PPT》010: 微信交流群发布于 2020-07-23 08:18前后端分离token后端技术赞同 2425 条评论分享喜欢收藏申请转载文章被以下专栏收录JAVA日知录公众号同名专栏,专注微服务,架构,数据库等
详解token已过期含义及解决方 token过期是否需要重新登录-CSDN博客
>详解token已过期含义及解决方 token过期是否需要重新登录-CSDN博客
详解token已过期含义及解决方 token过期是否需要重新登录
最新推荐文章于 2024-01-03 15:56:53 发布
CRMEB商城系统
最新推荐文章于 2024-01-03 15:56:53 发布
阅读量1w
收藏
10
点赞数
文章标签:
java
数据库
redis
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_64051447/article/details/130860602
版权
详解token已过期含义及解决方 token过期是否需要重新登录Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。单一服务器架构该架
Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。
单一服务器架构
该架构下后端只有一台服务器提供服务。
认证授权流程:
1.Web应用中设置拦截器对所有请求进行拦截,如果校验不通过则跳转登陆重新认证
2.客户端发起认证请求,传入用户名密码
3.通过验证后,应用在服务器上将用户信息存入session中,并将session id返回给客户端
4.客户端将session id存在本地cookie或local storage中,再次访问时传入session id
5.Web应用根据session id对比服务器的session数据,确认用户身份
适合场景
这种模式只适合单服务器的场景
常用实现
shiro ;自定义注解 + 拦截器/AOP方案;filter方案等
缺陷
如果是分布式服务或跨域体系架构的系统则会出现session无法共享的问题。
如何解决
解决方案有两种,第一种是将session统一存放,实现分布式session共享,第二种方案是客户端生成token
分布式服务架构
分布式服务架构下,后端的服务器由一台变成了多台。
Session共享方案
认证授权流程:
1.使用nginx做负载均衡,多台web应用
2.客户端发起认证请求,根据策略到其中一台web
3.通过验证后,服务端将用户的信息存入持久化层,例如redis缓存数据库,再生成token令牌
4.并将生成的token返回客户端,存入客户端缓存。
5.客户端再次访问web,根据策略路由到其中一台,web应用查询持久化层,根据带入的token查询用户登陆信息,确认身份。
适合场景
并发量不高的分布式应用
常用实现
shiro ;自定义注解 + 拦截器/AOP方案;filter方案等
缺陷
1、这种方案的缺陷在于依赖于持久层的数据库如redis,会有单点风险,如果持久层失败,整个认证体系都会挂掉;
2、每一次调用都需要访问持久化层进行验证,会给持久化层造成压力,在高并发场景,持久化层容易成为瓶颈;
如何解决
持久层的数据库如redis做高可用和集群。
客户端token方案
认证授权流程:
1.客户端发起认证请求,根据策略到其中一台web
2.通过验证后,服务端将用户登陆信息封装成token(token本身可以自解释)返回给客户端,不存储在服务端
3.客户端将返回的完整信息存入缓存。
4.客户端再次访问web,根据策略路由到其中一台,带入登陆信息,服务端根据信息确认身份。
适合场景
优势在于服务端不保存用户会话数据,服务端无状态,不用去持久层查询从而增加了效率,适合一次性验证、restful api 的无状态认证、并发量较高的分布式应用等
常用实现
jwt
缺陷
token一旦下发便不受服务端控制,如果发生token泄露,服务器也只能任其蹂躏,在其未过期期间不能有任何措施,同时存在以下两个问题:
1、失效问题,因为token是存放在客户端的,服务端无法主动让token失效,比如踢人下线、用户权限发生变化等场景就实现不了
2、续签问题,token 有效期一般都建议设置的不太长, token 过期后用户需要重新登录,导致用户需要频繁登录
如何解决
针对失效问题:
① 将 token 存入内存数据库:将 token 存入 DB 或redis中。如果需要让某个 token 失效就直接从 redis 中删除这个 token 即可。但是,这样会导致每次使用 token 发送请求都要先从redis中查询 token 是否存在的步骤,而且违背了 JWT 的无状态原则,不可取。
② 黑名单机制:使用内存数据库比如 redis 维护一个黑名单,如果想让某个 token 失效的话就直接将这个 token 加入到 黑名单 即可。然后,每次使用 token 进行请求的话都会先判断这个 token 是否存在于黑名单中。
针对续签问题:
① 类似于 Session 认证中的做法: 假设服务端给的 token 有效期设置为30分钟,服务端每次进行校验时,如果发现 token 的有效期马上快过期了,服务端就重新生成 token 给客户端。客户端每次请求都检查新旧token,如果不一致,则更新本地的token。这种做法的问题是仅仅在快过期的时候请求才会更新 token ,对客户端不是很友好。每次请求都返回新 token :这种方案的的思路很简单,但是,很明显,开销会比较大。
② 用户登录返回两个 token :第一个是 acessToken ,它的过期时间比较短,不如1天;另外一个是 refreshToken 它的过期时间更长一点比如为10天。客户端登录后,将 accessToken和refreshToken 保存在客户端本地,每次访问将 accessToken 传给服务端。服务端校验 accessToken 的有效性,如果过期的话,就将 refreshToken 传给服务端。如果 refreshToken 有效,服务端就生成新的 accessToken 给客户端。否则,客户端就重新登录即可。
说明:JWT 最适合的场景是不需要服务端保存用户状态的场景,但是如果考虑到 token 注销和 token 续签的场景话,没有特别好的解决方案,大部分解决方案都给 token 加上了状态,这就有点类似 Session 认证了。
微服务架构
微服务架构下服务端根据业务拆分为多个服务,除了公司内部服务外,外部客户或者第三方也通过api网关统一转发请求,在这个阶段系统需要提供跨系统单点登录、第三方授权登录等基础能力。在这种架构下后端建立单独的认证授权中心。 目前实现统一身份认证和授权的技术手段较多,总体可以归纳为以下几类。
传统的 Cookie + Session 解决方案 ,有状态会话模式
认证授权流程:
同分布式服务架构中的“Session共享方案”
适合场景:
同分布式服务架构中的“Session共享方案”
常用实现:
同分布式服务架构中的“Session共享方案”
缺陷:
分布式 Session 是老牌的成熟解决方案,但因其状态化通信的特性与微服务提倡的API导向无状态通信相互违背,且共享式存储存在安全隐患,因此微服务一般不太采用
JWT+网关撤销令牌方案,无状态交互模式
认证授权流程:
同分布式服务架构中的“客户端token方案”,只是在该基础上,加上API网关令牌失效和令牌续签的机制,参考分布式服务架构中的“Session共享方案”的“如何解决”部分。
适合场景:
同分布式服务架构中的“客户端token方案”
常用实现:
同分布式服务架构中的“客户端token方案”
缺陷:
同分布式服务架构中的“客户端token方案”
JWT + OAutstrong.0 +CAS方案
CAS是单点登录的解决方案,单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS共涉及角色有:CAS Client(下文提到的系统A等)、User、CAS Server(认证中心)。CAS 是一个认证框架,其本身定义了一套灵活完整的认证流程,但其兼容主流的认证和授权协议如 OAutstrong、SAML、OpenID 等,因此一般采用 CAS + OAutstrong 的方案实现 SSO 和授权登录。
认证授权流程:
1.用户访问系统A;
2.系统A发现用户没有登录,也没有ticket,重定向到认证中心;有ticket跳转 第7步;
3.认证中心发现用户并未登录,展示登录页面;
4.用户登录;
5.认证中心登录成功,带着生成的ticket,重定向到之前的系统A页面;
6.系统A检查登录,还是未登录,但存在ticket。系统A带着ticket和认证中心进行校验;
7.认证中心返回对应的用户名;
8.系统A检查返回的用户名是否只有一个且不为空,若是,则返回给用户指定的资源信息;若不是,则跳转 第2步。
常用实现
spring security + CAS
OAutstrong.0协议考虑到了微服务认证中的方方面面,提供的多种授权模式。这种方案的优点是安全性好,是业内成熟的给第三方提供授权登录解决方案,但是实现成本和复杂度高。 OAutstrong.0提供了4种授权模式,能够适应多种场景,作为基于令牌的安全框架,可以广泛用于需要统一身份认证和授权的场景。 在 OAutstrong.0 的实施过程中,一般会采用 JWT 作为令牌的主要标准。以文章分享举个例子,你在(登录后)浏览某论坛时,遇到了一篇好文章,想要分享给大家时,你需要登录(扫码或者登录用户名密码)第三方账户如来完成分享。
OAutstrong.0还有个替代方案,OIDC,它是OpenID Connect的简称,OIDC=(Identity, Authentication) + OAuth 2.0。它在OAutstrong上构建了一个身份层,是一个基于OAutstrong协议的身份认证标准协议。暂时没研究,有兴趣的朋友可以查查。
认证授权流程:
1、在点击分享链接时,主服务器会直接(接口)请求第三方服务器,第三方服务器会校验主服务器上的用户此时是否授权给自己(第三方);
2、没有授权信息,用户登录(扫描或者密码)。
3、主服务器拿着用户的登录信息去第三方确认认证授权(密码是否正确、是否授权)。
4、认证失败,密码错误。(重新登录)
5、认证成功(确认授权),第三方认证服务会返回的授权码。
6、主服务器带着授权码请求第三方资源服务器,第三方资源服务器会返回指定的URI(分享界面)。
7、用户操作分享操作(填写自己的话语),点击分享按钮完成。
常用实现
spring security +OAutstrong.0
OAutstrong.0提供了4种授权模式,如下:
授权码模式
授权码模式相对其他三个模式来说是功能最完整,流程最安全严谨的授权方式。它的特点是通过客户端的后台服务器与服务提供商的认证服务器进行交互:
A. 用户访问客户端,客户端将用户导向认证服务器,需要携带客户端ID凭证和重定向URI。
B. 用户选择是否给予客户端授权。
C. 假设用户给予授权,认证服务器将用户导向事先指定的重定向URI,同时附上一个授权码。
D. 客户端收到授权码后,携带事先指定的重定向URI和授权码向认证服务器申请令牌。
E. 认证服务器核对授权码和重定向URI,确认无误后,向客户端颁发访问令牌(access token)和刷新令牌(refresh token)。
这里的resource owner代表客户,user-agent代表客户使用的访问工具如浏览器或App,client指第三方客户端
简化模式
简化模式不通过服务端程序来完成,比授权码模式减少了“授权码”这个步骤,直接由浏览器发送请求获取令牌,令牌对访问者是可见的,且客户端不需要认证,这种模式一般用于无后端应用,如手机/桌面客户端程序、浏览器插件
A. 用户访问客户端,客户端将用户导向认证服务器,需要携带客户端ID凭证和重定向URI。
B. 用户选择是否给予客户端授权。
C. 假设用户给予授权,认证服务器将用户导向事先指定的重定向URI,并在URI的Hash部分包含了访问令牌(Fragment)。
D. 浏览器向资源服务器发出请求,其中不包含事先收到的Hash部分(Fragment)。
E. 资源服务器返回一段脚本,其中包含的代码可以获取Hash部分中的令牌。
F. 浏览器执行事先获取的脚本,提取出令牌
G. 浏览器将令牌发送给客户端。
密码模式
密码模式中,用户向客户端提供用户名和密码,客户端使用这些信息,直接向认证服务器索要授权。这种模式违背了前面提到的微服务安全要解决的问题(不暴露用户名和密码),但是在一些用户对客户端高度信任的情况下,例如公司内部软件间的授权下,使用这种模式也是适用的
A. 用户向客户端提供用户名和密码。
B. 客户端将用户名和密码发送给认证服务器,向认证服务器索要令牌。
C. 认证服务器确认无误后,向客户端提供访问令牌。
客户端模式
客户端模式是客户端以自己的名义去授权服务器申请授权令牌,并不是完全意义上的授权。一般不适用这种模式
A. 客户端向认证服务器进行身份认证,并要求获取访问令牌。
B. 认证服务器确认无误后,向客户端提供访问令牌。
刷新令牌
如果用户访问的时候,客户端的"访问令牌"已经过期,则需要使用"更新令牌"申请一个新的访问令牌
A. 客户端向认证服务器进行身份认证,并要求获取访问令牌。
B. 认证服务器确认无误后,返回访问令牌和一个刷新令牌。
C. 客户端通过访问令牌访问受保护资源。
D. 如果访问令牌未过期,则向客户端提供资源服务。
E. 客户端通过访问令牌访问受保护资源。
F. 如果访问令牌过期,受保护资源服务器返回Invalid Token Error。
G. 客户端得到上方的错误后,通过刷新令牌向授权服务器申请一个新的访问令牌。
H. 认证服务器确认无误后,返回访问令牌和一个刷新令牌。
优惠劵
CRMEB商城系统
关注
关注
0
点赞
踩
10
收藏
觉得还不错?
一键收藏
打赏
知道了
0
评论
详解token已过期含义及解决方 token过期是否需要重新登录
否则,客户端就重新登录即可。暂时没研究,有兴趣的朋友可以查查。详解token已过期含义及解决方 token过期是否需要重新登录Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。说明:JWT 最适合的场景是不需要服务端保存用户状态的场景,但是如果考虑到 token 注销和 token 续签的场景话,没有特别好的解决方案,大部分解决方案都给 token 加上了状态,这就有点类似 Session 认证了。
复制链接
扫一扫
VS2017 C# 获取微信token及验证access_token是否过期
02-23
本代码演示通过VS2017 C# 获取微信token及验证access_token是否过期,以及通过access_token读取云中存储的数据。
今天和大家分享一下 token 失效的处理方式
徐飞的博客
03-16
2万+
面试官:说说token失效的处理方式
参与评论
您还未登录,请先
登录
后发表或查看评论
K8S Dashboard登录Token过期问题处理
最新发布
alksjdfp32r的博客
01-03
758
K8S Dashboard登录Token过期问题处理
Android token过期刷新处理的方法示例
08-26
主要介绍了Android token过期刷新处理的方法示例,本文详细的介绍了2种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
公众号token失效,但是过期时间却没有过期,解决方案
01-20
公众号token失效,但是过期时间却没有过期,解决方案解决方案很多公众号开发的程序员们都碰到过,token的有效期明明没有过期,但是token却失效了,往往因为此错误遗漏很多信息,所以解决逻辑如下;
解决方案很多公众号开发的程序员们都碰到过,token的有效期明明没有过期,但是token却失效了,往往因为此错误遗漏很多信息,所以解决逻辑如下;
首先token是通过已经储存在数据库的access_token来获取(如果没有,那就要请求微信API来获取),之后通过token测试是否有效API,例如:
$access_token = (new CommonMoudle())->get_authori
Vue利用路由钩子token过期后跳转到登录页的实例
11-26
在Vue2.0中的路由钩子主要是用来拦截导航,让它完成跳转或前取消,可以理解为路由守卫。
分为全局导航钩子,单个路由独享的钩子,组件内钩子。
三种 类型的钩子只是用的地方不一样,都接受一个函数作为参数,函数传入三个参数,分别为to,from,next。
其中next有三个方法
(1)next(); //默认路由
(2)next(false); //阻止路由跳转
(3)next({path:’/’}); //阻止默认路由,跳转到指定路径
这里我使用了组件内钩子进行判断token过期后跳转到登录页,其他两种钩子可以去官网查看。
//路由前验证
beforeRouteEnter(to, f
关于 Token 过期问题的两种解决方案
m0_65812066的博客
01-06
2万+
手动更新token。拿到最新的token值后再重新发起刚刚因token过期的请求。2.refresh_token也有过期的时候,这时只能强行让用户自己重新登入了。手动更新token。拿到最新的token值后再跳回之前浏览的页面。时候,我们自己手动添加请求头为refresh_token。注意:1. 在请求响应器中做判断在非。请求头配置token,而。
JWT 讲解与 token 过期自动续期解决方案
weixin_43249535的博客
01-09
2万+
JWT 讲解 与 token 过期自动续期解决方案1.什么是token2.什么是JWT3.token过期自动续费方案3.1 token过期3.2 解决方案
1.什么是token
Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。
使用tok
token 过期的处理方案有哪些?
生命不息,挖坑不止
06-29
1万+
在用户登录时,除了发放一个访问令牌(Access Token)以外,再发放一个刷新令牌(Refrsh Token)。当访问令牌过期时,使用刷新令牌向服务器请求新的访问令牌。当访问令牌过期时,跳转回登录界面,让用户重新登录。这种方式的优点是可以避免用户频繁登录,但需要妥善保管刷新令牌,因为它的安全性比访问令牌更高。这种方式的优点是用户只要频繁访问,就不需要登录,但可能会增加服务器负担。用户每次使用使用访问令牌时,服务器都会更新访问令牌的过期时间。访问令牌的有效期比较短,刷新令牌的有效期比较长。
JWT的token过期自动续期(无redis)
qq_1641486826的博客
01-19
7873
思路:
由于jwt中的token过期时间是打包在token中的,用户登录以后发送给客户端以后token不能变化,那么要在用户无感知的情况下刷新token,就要在符合过期条件的情况下,在缓存一个新的token,作为续命token,再次解析不要解析客户端发送的token,要解析自己缓存的续命token
主要逻辑:
如果当前token没有超过过期时间的两倍,续期,超过了重新登录
主要代码如下:
package com.hongseng.app.config.jwtfilter;
import enums.Tok
JWT续期问题,ChatGPT解决方案
全栈行动派的博客
03-04
6728
JWT(JSON Web Token)通常是在用户登录后签发的,用于验证用户身份和授权。JWT 的有效期限(或称“过期时间”)通常是一段时间(例如1小时),过期后用户需要重新登录以获取新的JWT。然而,在某些情况下,用户可能会在JWT到期之前使用应用程序,这可能会导致应用程序不可用或需要用户重新登录。为了避免这种情况,解决方案:刷新令牌(Refresh Token)、自动延长JWT有效期
请求时token过期自动刷新token操作
10-14
主要介绍了请求时token过期自动刷新token操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
【前后端交互】token过期验证策略(express+axios)
qq_34838046的博客
10-16
1234
文章目录逻辑服务端保存tokentoken更新部分代码校验token校验中间件
逻辑
登录时,服务端生成token,保存并返回token。前端保存token
退出时,服务端删除服务端token。
发送请求时,前端携带token,服务端校验token并与保存的token对比。
校验token
token未过期,正常返回。
token接近过期,服务端重新生成token并返回,前端更新token。
token已过期,判断token与服务器保存的token是否相同。
若相同,则token正常过期,生成token,保
token 过期刷新令牌_token已过期怎么办
weixin_29109553的博客
12-24
1万+
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。token已过期的解决方法是:token已过期代表证书等过期的意思。需要重新获取code,然后得到access_token,即要重新调用授权界面,需要用refreshtoken刷新accesstoken,如果刷新取到了新的accesstoken、refreshtoken、expirein,需要用这些新的去替换掉关联表中的数据,建议...
一,用户操作过程中token过期了怎么续上?
Weiyatong的博客
03-20
4194
一,用户操作过程中token过期了怎么续上?
JWT过期处理——单token方案
weixin_44347271的博客
12-04
9322
前后端分离的项目中采用jwt作为接口的安全机制会遇到jwt过期的问题。
jwt中可以设置过期时间,即使是设置成一个月,但可能用户正上一秒还在使用,下一秒jwt过期被叫去重新登录,这是不能接受的,所以需要有处理jwt过期的机制。
在这个问题上比较常用的做法是采用双token——access token和refresh token来处理,access token用户授权,refresh token用于前者过期后获取新的access token。
这里。
我在这里记录我单token方案的思路。
用户登录时生成t
微服务jwt登录过期解决方案
酷毙了耶的博客
01-06
8259
好长时间没有上来写博客了,想你们了都有点 ,????,近期一直在忙这搭建微服务架构,为一个app提供稳定服务而忙碌,从而在搭建的过程中,遇到了jwt过期以及,恶意刷新jwt的问题,今天主要是针对这两个问题展开教程.话不多说,先说一下什么是jwt
...
JWT token过期自动续期解决方案
热门推荐
chen子健
08-29
5万+
JWT
JWT全称JSON Web Token,由三部分组成header(头部,用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等)、payload(载荷,就是存放有效信息的地方,在这一部分中存放过期时间)和signature(签证,签证信息)。
token
token就是后端生成的JWT字符串值,在前后端分离中,token是前端访问后端接口的合法身份、权限的凭证。
token过期...
关于解决token过期失效问题
xiaofiy的博客
06-15
3万+
关于解决token过期失效问题,用户对token无感知(实现免登陆)一、先认识下token二、整体思路三、实现步骤1.理清各个文件作用2.路由导航守卫3.封装localStorage方法4.vuex5.封装axios 实现请求拦截器和响应拦截器(重点部分)四、小结
一、先认识下token
二、整体思路
三、实现步骤
1.理清各个文件作用
2.路由导航守卫
设置用户有无token访问主页,并且登录成功回到目标页
import Vue from 'vue'
import VueRouter from 'v
js-cookie设置token过期时间_详解ASP.NET Core Web Api之JWT刷新Token_实用技巧
06-02
好的,针对您的问题,我可以给您一些关于js-cookie设置token过期时间以及ASP.NET Core Web API之JWT刷新Token的实用技巧。
首先,关于js-cookie设置token过期时间,可以通过以下代码实现:
```javascript
// 设置cookie过期时间为1天
Cookies.set('token', 'your_token_value', { expires: 1 });
```
其中,`expires`属性表示过期时间,单位为天。
其次,关于ASP.NET Core Web API之JWT刷新Token,可以采用以下方法:
在JWT的payload中加入`exp`属性,表示token的过期时间。当token过期后,客户端需要向服务器发送请求,获取新的token。服务器对于过期的token,可以返回一个特定的状态码,比如401 Unauthorized。客户端接收到该状态码后,可以重新向服务器发送请求,获取新的token。
同时,在服务器端需要实现一个刷新token的接口,接口的功能是根据旧的token生成新的token。具体实现可以参考以下代码:
```csharp
[HttpPost("refresh-token")]
public IActionResult RefreshToken([FromBody] string token)
{
// 验证旧的token是否有效
var principal = _jwtService.GetPrincipalFromExpiredToken(token);
if (principal == null)
return BadRequest("Invalid token");
// 生成新的token
var newToken = _jwtService.GenerateToken(principal.Claims);
return Ok(newToken);
}
```
其中,`_jwtService`表示JWT的服务类,`GetPrincipalFromExpiredToken`方法用于从过期的token中获取`ClaimsPrincipal`对象,`GenerateToken`方法用于生成新的token。
希望以上内容对您有所帮助。如有其他问题,请随时提问。
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
CRMEB商城系统
CSDN认证博客专家
CSDN认证企业博客
码龄2年
西安众邦网络科技有限公司
377
原创
2万+
周排名
5218
总排名
52万+
访问
等级
5279
积分
744
粉丝
825
获赞
42
评论
1340
收藏
私信
关注
热门文章
企业微信接口错误代码大全
18828
微信支付的收款功能被限制了怎么办,收款受限制怎么解除?
18788
MySQL8超详细安装教程
14771
网站出现403 Forbidden错误的原因以及怎么解决的方法
14472
彻底搞懂ESLint与Prettier在vscode中的代码自动格式化
12193
最新评论
APP打包教程(使用HBuilder X工具打包uni-app)
努力搬砖的小码:
打包APP必须要域名吗
vue + vue-office 实现多种文件(docx、excel、pdf)的预览
一袭锦衣:
docx写本地地址,显示不出来文档
Access-Control-Allow-Origin跨域解决及详细介绍
noonsz:
Access-Control-Allow-Credentials 含义说的不正确模糊。它用于指定在跨源(CORS)请求中,是否允许浏览器发送凭证(credentials)。这些凭证包括cookies以及HTTP认证相关的信息。当此头部的值设置为 "true" 时,它允许前端在进行跨域请求时携带凭证信息。这意味着浏览器可以在跨域请求中包含cookies和HTTP认证信息。
在这种情况下,服务器可以接收并使用这些凭证,例如进行会话管理或者保持用户的登录状态。
由于包含凭证的跨域请求可能涉及敏感数据,因此使用Access-Control-Allow-Credentials: true需要谨慎。特别是,当这个头部为 "true" 时,Access-Control-Allow-Origin 不能设置为 "*",因为这会导致任意第三方网站都可能携带用户的凭证发起请求。而应该设置为确切的、可信的来源域名。
credentials 通常包括以下几种:
Cookies, HTTP Authentication,SSL/TLS Client Certificates
最后再解释说明一下 SSL/TLS Client Certificates 是一种基于证书的认证机制,用于在SSL/TLS层进行身份验证。客户端将其证书发送给服务器进行认证。
获取微信服务器IP地址
HrYy2662:
这个服务器地址能用来做什么呢?
vue + vue-office 实现多种文件(docx、excel、pdf)的预览
奥拓蛋/:
引入依赖会报错
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
掌握Vue的20种写法,让开发效率翻倍!
企业如何利用微信创造持续增长的私域流量
Vue3自定义Hooks一键换肤教程
2024年37篇
2023年316篇
2022年38篇
目录
目录
最新文章
掌握Vue的20种写法,让开发效率翻倍!
企业如何利用微信创造持续增长的私域流量
Vue3自定义Hooks一键换肤教程
2024年37篇
2023年316篇
2022年38篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
添加红包
祝福语
请填写红包祝福语或标题
红包数量
个
红包个数最小为10个
红包总金额
元
红包金额最低5元
余额支付
当前余额3.43元
前往充值 >
需支付:10.00元
取消
确定
下一步
知道了
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
规则
hope_wisdom 发出的红包
打赏作者
CRMEB商城系统
你的鼓励将是我创作的最大动力
¥1
¥2
¥4
¥6
¥10
¥20
扫码支付:¥1
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
0
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。
余额充值
【322期】面试官问:token 过期后,如何自动续期? - 知乎
【322期】面试官问:token 过期后,如何自动续期? - 知乎切换模式写文章登录/注册【322期】面试官问:token 过期后,如何自动续期?Java精选微信公众号:Java精选(w_z90110),每日推送优质技术文章等。点击上方“Java精选”,选择“设为星标”别问别人为什么,多问自己凭什么!下方有惊喜,留言必回,有问必答!每一天进步一点点,是成功的开始...JWT token的 payload 部分是一个json串,是要传递数据的一组声明,这些声明被JWT标准称为claims。JWT标准里面定义的标准claim包括:iss(Issuser):JWT的签发主体;sub(Subject):JWT的所有者;aud(Audience):JWT的接收对象;exp(Expiration time):JWT的过期时间;nbf(Not Before):JWT的生效开始时间;iat(Issued at):JWT的签发时间;jti(JWT ID):是JWT的唯一标识。除了以上标准声明以外,我们还可以自定义声明。以 com.auth0 为例,下面代码片段实现了生成一个带有过期时间的token.String token = JWT.create() .withIssuer(ISSUER) .withIssuedAt(new Date(currentTime))// 签发时间 .withExpiresAt(new Date(currentTime + EXPIRES_IN * 1000 * 60))// 过期时间戳 .withClaim("username", username)//自定义参数 .sign(Algorithm.HMAC256(user.getPassword()));其中:withIssuer() 设置签发主体;withIssuedAt() 设置签发时间;withExpiresAt() 设置过期时间戳,过期的时长为 EXPIRES_IN (单位秒);withClaim() 设置自定义参数。JWT设置了过期时间以后,一定超过,那么接口就不能访问了,需要用户重新登录获取token。如果经常需要用户重新登录,显然这种体验不是太好,因此很多应用会采用token过期后自动续期的方案,只有特定条件下才会让用户重新登录。token过期的续期方案解决token过期的续期问题可以有很多种不同的方案,这里举一些比较有代表性的例子。首先我们看一个单token方案,这个方案除了可以实现token续期以外,还可以实现某些条件下的强制重新登录。单token方案将 token 过期时间设置为15分钟;前端发起请求,后端验证 token 是否过期;如果过期,前端发起刷新token请求,后端为前端返回一个新的token;前端用新的token发起请求,请求成功;如果要实现每隔72小时,必须重新登录,后端需要记录每次用户的登录时间;用户每次请求时,检查用户最后一次登录日期,如超过72小时,则拒绝刷新token的请求,请求失败,跳转到登录页面。另外,关于更多token相关面试题,公众号Java精选,回复java面试,获取面试资料。另外后端还可以记录刷新token的次数,比如最多刷新50次,如果达到50次,则不再允许刷新,需要用户重新授权。上面介绍的单token方案原理比较简单。下面我们再看一个双token方案。双token方案登录成功以后,后端返回 access_token 和 refresh_token,客户端缓存此两种token;使用 access_token 请求接口资源,成功则调用成功;如果token超时,客户端携带 refresh_token 调用token刷新接口获取新的 access_token;后端接受刷新token的请求后,检查 refresh_token 是否过期。如果过期,拒绝刷新,客户端收到该状态后,跳转到登录页;如果未过期,生成新的 access_token 返回给客户端。客户端携带新的 access_token 重新调用上面的资源接口。客户端退出登录或修改密码后,注销旧的token,使 access_token 和 refresh_token 失效,同时清空客户端的 access_token 和 refresh_toke。微信网页授权是通过OAuth2.0机制实现的,也使用了双token方案。微信网页授权方案用户在第三方应用的网页上完成微信授权以后,第三方应用可以获得 code(授权码)。code的超时时间为10分钟,一个code只能成功换取一次access_token即失效。第三方应用通过code获取网页授权凭证access_token和刷新凭证 refresh_token。access_token是调用授权关系接口的调用凭证,由于access_token有效期(2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新。refresh_token拥有较长的有效期(30天),当refresh_token失效的后,需要用户重新授权。后端实现token过期还可以利用Redis来存储token,设置redis的键值对的过期时间。如果发现redis中不存在token的记录,说明token已经过期了。作者:微说互联网https://www.toutiao.com/article/6995179162675790350公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!Java精选面试题(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!------ 特别 推荐 ------特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注。文章有帮助的话,在看,转发吧!发布于 2022-05-06 08:43面试问题面试token赞同 34 条评论分享喜欢收藏申请
关于Token 自动续期的解决方案 - 知乎
关于Token 自动续期的解决方案 - 知乎首发于JAVA日知录切换模式写文章登录/注册关于Token 自动续期的解决方案JAVA日知录前言在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个jwt token。前端(如vue)在接收到jwt token后会将token存储到LocalStorage中。后续每次请求都会将此token放在请求头中传递到后端服务,后端服务会有一个过滤器对token进行拦截校验,校验token是否过期,如果token过期则会让前端跳转到登录页面重新登录。因为jwt token中一般会包含用户的基本信息,为了保证token的安全性,一般会将token的过期时间设置的比较短。但是这样又会导致前端用户需要频繁登录(token过期),甚至有的表单比较复杂,前端用户在填写表单时需要思考较长时间,等真正提交表单时后端校验发现token过期失效了不得不跳转到登录页面。如果真发生了这种情况前端用户肯定是要骂人的,用户体验非常不友好。本篇内容就是在前端用户无感知的情况下实现token的自动续期,避免频繁登录、表单填写内容丢失情况的发生。实现原理jwt token自动续期的实现原理如下:登录成功后将用户生成的 jwt token 作为key、value存储到cache缓存里面 (这时候key、value值一样),将缓存有效期设置为 token有效时间的2倍。当该用户再次请求时,通过后端的一个 jwt Filter 校验前端token是否是有效token,如果前端token无效表明是非法请求,直接抛出异常即可;根据规则取出cache token,判断cache token是否存在,此时主要分以下几种情况:cache token 不存在这种情况表明该用户账户空闲超时,返回用户信息已失效,请重新登录。cache token 存在,则需要使用jwt工具类验证该cache token 是否过期超时,不过期无需处理。过期则表示该用户一直在操作只是token失效了,后端程序会给token对应的key映射的value值重新生成jwt token并覆盖value值,该缓存生命周期重新计算。实现逻辑的核心原理:前端请求Header中设置的token保持不变,校验有效性以缓存中的token为准。代码实现(伪码)登录成功后给用户签发token,并设置token的有效期...
SysUser sysUser = userService.getUser(username,password);
if(null !== sysUser){
String token = JwtUtil.sign(sysUser.getUsername(),
sysUser.getPassword());
}
...
public static String sign(String username, String secret) {
//设置token有效期为30分钟
Date date = new Date(System.currentTimeMillis() + 30 * 60 * 1000);
//使用HS256生成token,密钥则是用户的密码
Algorithm algorithm = Algorithm.HMAC256(secret);
// 附带username信息
return JWT.create().withClaim("username", username).withExpiresAt(date).sign(algorithm);
}
将token存入redis,并设定过期时间,将redis的过期时间设置成token过期时间的两倍Sting tokenKey = "sys:user:token" + token;
redisUtil.set(tokenKey, token);
redisUtil.expire(tokenKey, 30 * 60 * 2);
过滤器校验token,校验token有效性public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
//从header中获取token
String token = httpServletRequest.getHeader("token")
if(null == token){
throw new RuntimeException("illegal request,token is necessary!")
}
//解析token获取用户名
String username = JwtUtil.getUsername(token);
//根据用户名获取用户实体,在实际开发中从redis取
User user = userService.findByUser(username);
if(null == user){
throw new RuntimeException("illegal request,token is Invalid!")
}
//校验token是否失效,自动续期
if(!refreshToken(token,username,user.getPassword())){
throw new RuntimeException("illegal request,token is expired!")
}
...
}
实现token的自动续期public boolean refreshToken(String token, String userName, String passWord) {
Sting tokenKey = "sys:user:token" + token ;
String cacheToken = String.valueOf(redisUtil.get(tokenKey));
if (StringUtils.isNotEmpty(cacheToken)) {
// 校验token有效性,注意需要校验的是缓存中的token
if (!JwtUtil.verify(cacheToken, userName, passWord)) {
String newToken = JwtUtil.sign(userName, passWord);
// 设置超时时间
redisUtil.set(tokenKey, newToken) ;
redisUtil.expire(tokenKey, 30 * 60 * 2);
}
return true;
}
return false;
}
...
public static boolean verify(String token, String username, String secret) {
try {
// 根据密码生成JWT效验器
Algorithm algorithm = Algorithm.HMAC256(secret);
JWTVerifier verifier = JWT.require(algorithm).withClaim("username", username).build();
// 效验TOKEN
DecodedJWT jwt = verifier.verify(token);
return true;
} catch (Exception exception) {
return false;
}
}
本文中jwt的相关操作是基于 com.auth0.java-jwt 实现,大家可以通过阅读原文获取 JwtUtil 工具类。小结jwt token实现逻辑的核心原理是 前端请求Header中设置的token保持不变,校验有效性以缓存中的token为准,千万不要直接校验Header中的token。实现原理部分大家好好体会一下,思路比实现更重要!如果本文对你有帮助,别忘记给我个三连:点赞,转发,评论。咱们下期见!收藏 等于白嫖,点赞 才是真情!这里为大家准备了一份小小的礼物,关注公众号,输入如下代码,即可获得百度网盘地址,无套路领取!001:《程序员必读书籍》002:《从无到有搭建中小型互联网公司后台服务架构与运维架构》003:《互联网企业高并发解决方案》004:《互联网架构教学视频》006:《SpringBoot实现点餐系统》007:《SpringSecurity实战视频》008:《Hadoop实战教学视频》009:《腾讯2019Techo开发者大会PPT》010: 微信交流群发布于 2020-07-23 08:18前后端分离token后端技术赞同 2425 条评论分享喜欢收藏申请转载文章被以下专栏收录JAVA日知录公众号同名专栏,专注微服务,架构,数据库等
对于token的认证,如何保证token的及时刷新? - 知乎
对于token的认证,如何保证token的及时刷新? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册Web 开发JSON Web Token(JWT)token对于token的认证,如何保证token的及时刷新?1,在拦截器里对将要过期的token 的进行刷新。(一个页面可能n个请求同时发出,也就是说 refresh_token 要支持多个,这个不算最好的解决…显示全部 关注者26被浏览88,275关注问题写回答邀请回答好问题添加评论分享4 个回答默认排序张少林同学 关注前言记录一下前后端分离下————token超时刷新策略!需求场景昨天发了一篇记录 前后端分离应用——用户信息传递 中介绍了token认证机制,跟几位群友讨论了下,有些同学有这么一个疑惑:token失效了,应该怎么做?强制定向到登录页?其实理论上如果是活跃用户,token失效后,假如用户正在操作表单,此时突然定向到登录页面,那用户体验太差了。实现目标延长token过期时间活跃用户在token过期时,在用户无感知的情况下动态刷新token,做到一直在线状态不活跃用户在token过期时,直接定向到登录页登录返回字段如何签发token,请看上一篇推文,这里不做过多介绍。先看看登录接口返回的数据如下: 1@Data
2public class LoginVo implements Serializable {
3
4 private static final long serialVersionUID = 6711396581310450023L;
5
6 //...省略部分业务字段
7
8 /**
9 * token令牌 过期时间默认15day
10 */
11 private String jwt;
12
13 /**
14 * 刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token
15 */
16 private String refreshJwt;
17
18 /**
19 * token过期时间戳
20 */
21 private Long tokenPeriodTime;
22
23}
具体返回字段的意义请看注释,这里再简要说明:jwt:用户正常访问接口时提交的token,过期时间设置长一些,15day吧refreshJwt:刷新token 过期时间可以设置为jwt的两倍,甚至更长,用于动态刷新token时候提交后台验证tokenPeriodTime:token过期时间戳,前端每次调用接口前需要主动判断是否已经过期,如果过期则提交refreshJwt访问token刷新的接口进行刷新动态刷新token前端检测到token过期后,携带refreshJwt访问后台刷新token的接口,服务端在拦截器中依然对refreshJwt进行解析鉴权假如refreshJwt也过期了,提示登录过期,强制跳转登录页假如refreshJwt还在有效期,则签发新的token返回,前端使用最新的token进行接口请求总结如果是活跃用户,那么允许他在refreshJwt过期时间与token过期时间的差值这段时间内,不停的动态刷新token,使其做到无感知的状态下一直保持登录状态如果用户不活跃,在refreshJwt过期时间到了,依然没有使用系统,那么将判定为不活跃用户,此时应当重定向到登录页了最后篇幅较短,主要是延续上一篇 前后端分离应用——用户信息传递 遗留问题做一下总结。如果你有更好的做法,欢迎留言告知我,谢谢啦。后续会不定期更新原创文章,欢迎关注公众号 「张少林同学」!编辑于 2019-01-22 12:22赞同 167 条评论分享收藏喜欢收起编程乐趣 关注这是我之前分享在星球里面的课程,下面整理下,分享下这个无感刷新Token技术方案。我们都知道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,并重新发起第二次用户搜索请求,但对用户来说是透明、毫无察觉的。好了,今天就分享到这了。顺便分享一个资料:最后,如果对你有帮助,欢迎点赞、收藏!- End -发布于 2024-02-02 23:28赞同 11 条评论分享收藏喜欢收起
使用token认证,如何检测token已过期并更新? - 知乎
使用token认证,如何检测token已过期并更新? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册Web 开发前端开发cookie (HTTP)JSON Web Token(JWT)使用token认证,如何检测token已过期并更新?我看到的是用一个refreshToken去更新token,但是token应该是前端发request请求资源的时候才能知道token失效了吧,那这样前端…显示全部 关注者15被浏览47,214关注问题写回答邀请回答好问题 2添加评论分享7 个回答默认排序WuYang✌ 我真的是来学习知识的,除非你编的故事很精彩 关注Jwt了解一下。各种前端后端库。舒服得不要不要的。发布于 2019-11-23 18:48赞同添加评论分享收藏喜欢收起XinPeng 关注前端确实可以看到一个请求错误。如果确认这个请求失败的原因是token过期的话,可以把这个请求存起来,然后立马去刷新token,再回到发送错误请求之前的那个时间节点。这样对用户来说就多了一个错误请求和refreshToken请求的等待时间而已。发布于 2019-11-21 15:50赞同 51 条评论分享收藏喜欢
web前端项目中如何处理token失效需要重新登陆的问题? - 知乎
web前端项目中如何处理token失效需要重新登陆的问题? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册Web 开发前端开发前端学习web前端项目中如何处理token失效需要重新登陆的问题?关注者2被浏览18,675关注问题写回答邀请回答好问题添加评论分享3 个回答默认排序小帅 关注在请求的响应拦截器中去判断statusCode是否为401 token失效失效弹出提示框告知用户,跳转登录重新进行登录axios拦截器 例子发布于 2020-12-10 14:00赞同 2添加评论分享收藏喜欢收起Leah 关注前言在《ASP.NET Core 自动刷新JWT Token》中我们实现了为客户端自动提供最新的Token。但是,当我们的 http://ASP.NET Core 应用需要调用第三方 API 时,如何更优雅地刷新第三方提供的 Token 呢?临时加更干货分享大家能看到这里,已是对我们的支持了。分享一组11月录制的.NET6零基础教程。我们喜欢做这样的分享,它足够的基础,对新手友好。如果需要的话,就来免费领取吧!资料免费自取:由于内容过多不便呈现,需要视频教程和配套源码的小伙伴,点击下方卡片!也可点击下方卡片:点击后自动复制威芯号,并跳转到威芯。搜索威芯号添加,内容已做打包,备注知乎即可免费领取,注意查收!思路我们可以在启动时就获取第三方提供的 Token 并保存到全局变量,然后在 Token 过期时间内定时获取第三方最新的 Token 并更新全局变量。这样每次调用 HttpClient 访问第三方 API 时,都是使用的准备好的 Token, 保证没有过期。实现创建一个后台服务 BackgroundService,然后在其 ExecuteAsync 方法中创建一个定时器 PeriodicTimer,定时刷新 Token:public class RefreshTokenService : BackgroundService, IDisposable
{
private readonly ITokenManager tokenManager;
public RefreshTokenService(ITokenManager tokenManager)
{
this.tokenManager = tokenManager;
}
protected async override Task ExecuteAsync(CancellationToken stoppingToken)
{
tokenManager.Token = await GetToken();
//30 分钟刷新一次
var timer = new PeriodicTimer(TimeSpan.FromMinutes(30));
while (await timer.WaitForNextTickAsync(stoppingToken))
{
tokenManager.Token = await GetToken();
}
}
private async Task
{
//调用第三方服务获取Token
}
}
接口ITokenManager定义如下,用于存储 Token:public interface ITokenManager
{
string Token { get; set; }
}
最后,我们在启动时进行依赖注入:builder.Services.AddSingleton
builder.Services.AddHostedService
结论现在,任何注入ITokenManager的类,都能始终获得有效的 Token 了。原文链接:ASP.NET Core 定时刷新第三方 Token发布于 2022-12-23 14:09赞同添加评论分享收藏喜欢收起
关于解决token过期失效问题「建议收藏」-腾讯云开发者社区-腾讯云
token过期失效问题「建议收藏」-腾讯云开发者社区-腾讯云全栈程序员站长关于解决token过期失效问题「建议收藏」关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网全栈程序员站长首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >关于解决token过期失效问题「建议收藏」关于解决token过期失效问题「建议收藏」全栈程序员站长关注发布于 2022-10-01 16:26:192.5K0发布于 2022-10-01 16:26:19举报文章被收录于专栏:全栈程序员必看全栈程序员必看大家好,又见面了,我是你们的朋友全栈君。关于解决token过期失效问题,用户对token无感知(实现免登陆)一、先认识下token二、整体思路三、实现步骤1.理清各个文件作用2.路由导航守卫3.封装localStorage方法4.vuex5.封装axios 实现请求拦截器和响应拦截器(重点部分)四、小结一、先认识下token在这里插入图片描述二、整体思路在这里插入图片描述三、实现步骤1.理清各个文件作用在这里插入图片描述2.路由导航守卫设置用户有无token访问主页,并且登录成功回到目标页import Vue from 'vue'import VueRouter from 'vue-router'
import store from '@/store/index.js'
Vue.use(VueRouter)
const router = new VueRouter({
routes
})
// 路由导航守卫
router.beforeEach((to, from, next) => {
if (to.path.startsWith('/user')) {
// 判断token
if (store.state.tokenInfo.token) {
next()
} else {
next({
path: '/login',
query: {
// 登录成功回到目标页
backto: to.fullPath // fullPath 会拿到路由后面的查询字符串
}
})
}
} else {
next()
}
})
export default router复制3.封装localStorage方法目的在vuex中调用/ 封装模块 使用localStorage实现持久化 只是进行保存
// 从localStorage中取出一项数据 名字叫name
export const getItem = name => {
return JSON.parse(localStorage.getItem(name))
}
// 向localStorage中设置一项数据 名字为name里面设置值为obj
export const setItem = (name, obj) => {
localStorage.setItem(name, JSON.stringify(obj))
}
// 删除
export const removeitem = name => {
localStorage.removeItem(name)
}复制4.vueximport Vue from 'vue'
import Vuex from 'vuex'
import {
setItem, getItem } from '@/utils/storage.js'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
// 保存公共数据
tokenInfo: getItem('tokenInfo') || {
}
},
mutations: {
mSetTokenInfo (state, tokenObj) {
state.tokenInfo = tokenObj
// 因为刷新会丢失所以进行持久化 调用storage方法
setItem('tokenInfo', tokenObj)
}
},
// -------------------此次重点---------------------------------------------------------
// 只跟新token 不跟新响应拦截器里面的refreshToken
mUpdateToken (state, newToken) {
state.tokenInfo.token = newToken
setItem('tokenInfo', state.tokenInfo)
},
actions: {
},
modules: {
}
})复制5.封装axios 实现请求拦截器和响应拦截器(重点部分)关于axios拦截器 可参考官方文档
(点我)axios拦截器官方跳转链接/* 对axios进行二次封装 请求拦截器增加token 响应拦截器处理大数据 */
import store from '@/store/index.js'
import axios from 'axios'
import JSONbig from 'json-bigint' // 引入大数字包
import router from '@/router/index.js'
/* 以前写法: axios.defaults.baseURL = 'XXX' 自定义写法:const xxx = axios.create({}) 一个项目中可能有不同的基地址 就要用自定义写法设置不同的基地址 */
const instance = axios.create({
baseURL: 'http://ttapi.research.itcast.cn',
transformResponse: [function (data) {
if (data === '') {
return false
}
try {
// 如果没有遇到错误,就返回 JSONbig处理之后的数据
return JSONbig.parse(data)
} catch (err) {
console.log('JSONbig转换出错', err)
return data
}
}]
})
// 在instance上添加请求拦截器 补充请求头token信息
instance.interceptors.request.use(function (config) {
// 从vuex中取出token
const token = store.state.tokenInfo.token
// 如果有token则 添加到headers中
if (token) {
config.headers.Authorization = `Bearer ${
token}`
}
return config
}, function (error) {
return Promise.reject(error)
})
//------------------------这里处理token过期--------------------------------------------
// 添加响应拦截器 处理401 token过期
instance.interceptors.response.use(function (response) {
return response
}, async function (error) {
// 如果是401错误 则做以下错误
if (error.response.status === 401) {
// 从vuex中取出token
const refreshToken = store.state.tokenInfo.token
// 是否有refreshToken
if (refreshToken) {
// 用refresh_token 重发请求 再次取回一个有效期的
try {
// 注意这里重新发请求要用axios 不能用封装的instance url地址是根据接口文档写的
const {
data: res } = await axios({
method: 'PUT',
url: 'http://ttapi.research.itcast.cn/app/v1_0/authorizations',
headers: {
Authorization: `Bearer ${
refreshToken}`
}
})
// 定义赋值新的token
const newToken = res.data.token
// 跟新vuex
store.commit('mUpdateToken', newToken)
// 再发请求
return instance(error.config)
} catch {
// 如果没有拿到新的token
// 回登录页
router.push({
path: '/login',
query: {
// currentRoute表示当前路由对象
backto: router.currentRoute.fullPath
}
})
}
} else {
// 如果没有refreshToken
router.push({
path: '/login',
query: {
backto: router.currentRoute.fullPath
}
})
}
} else {
// 如果不是401错误
return Promise.reject(error)
}
})
export default instance复制四、小结在这里插入图片描述版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194603.html原文链接:https://javaforall.cn本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2022年9月12日 ,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看javascriptnode.jsvue.jsjavahttps本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!javascriptnode.jsvue.jsjavahttps评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0目录关于解决token过期失效问题,用户对token无感知(实现免登陆)一、先认识下token二、整体思路三、实现步骤1.理清各个文件作用2.路由导航守卫3.封装localStorage方法4.vuex5.封装axios 实现请求拦截器和响应拦截器(重点部分)四、小结领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00
token系统讲解及过期处理-阿里云开发者社区
token系统讲解及过期处理-阿里云开发者社区
产品解决方案文档与社区权益中心定价云市场合作伙伴支持与服务了解阿里云售前咨询 95187-1 在线服务售后咨询 4008013260 在线服务其他服务 我要建议 我要投诉更多联系方式备案控制台开发者社区首页探索云世界探索云世界云上快速入门,热门云上应用快速查找了解更多问产品动手实践考认证TIANCHI大赛活动广场活动广场丰富的线上&线下活动,深入探索云世界任务中心做任务,得社区积分和周边高校计划让每位学生受益于普惠算力训练营资深技术专家手把手带教话题畅聊无限,分享你的技术见解开发者评测最真实的开发者用云体验乘风者计划让创作激发创新阿里云MVP遇见技术追梦人直播技术交流,直击现场下载下载海量开发者使用工具、手册,免费下载镜像站极速、全面、稳定、安全的开源镜像技术资料开发手册、白皮书、案例集等实战精华插件为开发者定制的Chrome浏览器插件探索云世界新手上云云上应用构建云上数据管理云上探索人工智能云计算弹性计算无影存储网络倚天云原生容器serverless中间件微服务可观测消息队列数据库关系型数据库NoSQL数据库数据仓库数据管理工具PolarDB开源向量数据库热门Modelscope模型即服务弹性计算云原生数据库物联网云效DevOps龙蜥操作系统平头哥钉钉开放平台大数据大数据计算实时数仓Hologres实时计算FlinkE-MapReduceDataWorksElasticsearch机器学习平台PAI智能搜索推荐人工智能机器学习平台PAI视觉智能开放平台智能语音交互自然语言处理多模态模型pythonsdk通用模型开发与运维云效DevOps钉钉宜搭支持服务镜像站码上公益
开发者社区
人工智能
文章
正文
token系统讲解及过期处理
2022-09-26
1700
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议》和
《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介:
笔记
欧阳呀
目录
热门文章
最新文章
为什么选择阿里云什么是云计算全球基础设施技术领先稳定可靠安全合规分析师报告产品和定价全部产品免费试用产品动态产品定价价格计算器云上成本管理解决方案技术解决方案文档与社区文档开发者社区天池大赛培训与认证权益中心免费试用高校计划企业扶持计划推荐返现计划支持与服务基础服务企业增值服务迁云服务官网公告健康看板信任中心关注阿里云关注阿里云公众号或下载阿里云APP,关注云资讯,随时随地运维管控云服务售前咨询:95187-1售后服务:400-80-13260法律声明及隐私权政策Cookies政策廉正举报安全举报联系我们加入我们阿里巴巴集团淘宝网天猫全球速卖通阿里巴巴国际交易市场1688阿里妈妈飞猪阿里云计算AliOS万网高德UC友盟优酷钉钉支付宝达摩院淘宝海外阿里云盘饿了么© 2009-2024 Aliyun.com 版权所有 增值电信业务经营许可证: 浙B2-20080101 域名注册服务机构许可: 浙D3-20210002 京D3-20220015浙公网安备 33010602009975号浙B2-20080101-4