首页 > 其他分享 >双Token实现无感刷新登录状态

双Token实现无感刷新登录状态

时间:2023-12-08 15:26:54浏览次数:22  
标签:登录 jwt Token refresh access token 刷新 无感

基于access_token和refresh_token实现无感刷新登录状态

双token原理

 
这是登录认证的流程:

验证通过之后,将用户信息放到jwt中。

 
访问接口的时候带上jwt,在Guard里取出来判断是否有效,jwt有效的话才能继续访问:

这种方式有个问题:
jwt是有有效期的,我们设置的是7天,实际上为了安全考虑会设置的很短,比如30分钟。
可能用户正在访问某个界面的时候,jwt突然失效了,必须重新登录。
体验比较差。

 
为了解决这个问题,服务端一般返回两个token:access_tokenrefresh_token

access_token是用来认证身份的,之前我们返回的就是这个token

refresh_token是用来刷新token的

 
服务端会返回新的 access_token和refresh_token,也就是这样的流程:

登录成功后,返回两个token:

access_token用来做登录权限:

refresh_token用来刷新,拿到新的token:

 
 
access_token设置为30分钟过期,而refresh_token设置7天过期。

这样7天内,如果access_token过期了,那就可以用refresh_token来刷新下,拿到新的token
只要不超过七天内未访问系统,那就可以一直是登录状态,可以无限续签,不需要登录。
如果超过七天内未访问系统,那么refresh_token也就过期了,这时候需要重新登录了。

 
这也是一般App采用的双token验证。

 

nest.js中的双token实现

创建一个nest项目:

nest new access_token_and_refresh_token -p npm

标签:登录,jwt,Token,refresh,access,token,刷新,无感
From: https://www.cnblogs.com/sunyan97/p/17887134.html

相关文章

  • 代码中公用生成使用token方法
    生成使用token引入pom<dependency>     <groupId>com.auth0</groupId>     <artifactId>java-jwt</artifactId>     <version>3.14.0</version>   </dependency>添加工具类packagecom.mashibing.interin......
  • 【转】PLSQL记住登录密码-登录历史和保存的位置
    一、保存登录历史首先,打开plsql后,首选项配置=》登录历史,定义: 二、删除历史,首选项配置=》登录历史,历史 三、保存历史位置(方便迁移)打开C:\Users\window登录帐号\AppData\Roaming\PLSQLDeveloper\Preferences里边有个和window登录帐号一样的文件夹,把里面的文件复制出来......
  • 【漏洞分析】Reflection Token 反射型代币攻击事件通用分析思路
    在本篇文章中,我将通过一个攻击事件引出ReflectionToken攻击事件的一个通用分析思路。关于ReflectionToken的其他案例分析,可以参考BEVO代币攻击事件分析及复现一文。TomInu攻击事件TomInuToken是一个反射型代币reflectiontoken,于2023-01-26遭到黑客攻击,攻击者获利355......
  • 深度系统(Deepin)开机无法登录,提示等待一千五百分钟
    深度系统(Deepin)20.0,某次开机无法登录,提示等待一千五百分钟。?????????用电脑这么多年,头一回遇到这种事情。我做了什么?答案是什么都没做。如果多次输错密码,你锁个10分钟,还可以接受。问题是我什么都没做居然就锁电脑25小时!正好客户催着更新软件!没辙,等了一晚上,第二天下午两点,可以登录了。然后......
  • 用了阿里云的CDN全站加速,后台登录不了
    fastadmin框架,用了阿里云的CDN全站加速,后台登录不进去了,输入用户名密码,提示登录成功,然后就跳出请登录的页面,接着又跳转到你已经登录的页面,就这样不断重复跳,因为不断跳,调试模式也没办法看。loginip_check也已经设置成了false,cdn设置了php文件不缓存。请问一下是哪里出了问题,该怎么......
  • Abp vNext自定义OpenIddict登录
    AbpvNext自定义OpenIdDict登录使用AbpvNext6.0我是打算给登录加一个验证码或者手机登录什么的,所以要自定义登录这方面官方文档写的不多,所以只能翻源码了源码分析首先就是去翻登录的api,用abp官方的angularDemo来看登录的路由,有三个网络请求/.well-known/openid-configurat......
  • Scope api1 not found in store. IdentityServer4.Validation.TokenRequestValidator:
    看明白了这个报错,说是scopeapi在授权服务器没有定义,但是一直不知道哪出错,我寻思也定义了这个资源来着但其实并没有,说的是scope不是说的resource,所以需要再定义一个Scope  ......
  • centos免密登录windows
    一、linux操作: 二、windows操作:1、Windows系统需安装OpenSSH服务;2、配置OpenSSH服务端的配置文件:<1>管理员权限打开cmd终端,输入命令ssh-keygen-trsa-fid_rsa执行后,将linux下生成的id_rsa.pub内容复制到C:\ProgramData\ssh下的目录,并修改文件名为authorized_keys;<2>在C......
  • Power BI Report Server自定义Form登录
    一、条件1、windowsserver主机一台,我是windowsserver2019(当然windows10或者10月份5日更新的windows11也是可以行的)。 2、SQLSever,我用的是SQLServer2019。3、PowerBIReportServer默认位置安装(默认位置:C:\ProgramFiles\MicrosoftPowerBIReportServer)。......
  • 如何记录SpringSecurity6.1中用户登录行为
    替换UsernamePasswordAuthenticationFilter类1.pom.xml<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId></dependency><plugin>......