跟着JHipster学做项目 (9) 处理用户登录超期

详解Spring Boot中的JWT令牌管理策略 为了安全起见,使用无状态JWT令牌时可以使用短时限TTL(1分钟)策略,然后这些令牌会在其生存时间内及时刷新。如果服务器不知道用户何时注销,那么可以继续刷新已注销用户的令牌。本文将提供针对这个问题的一种解决方案,使之在保持水平扩展性的同时确保安全性能不受影响。 架构设计 从图中展示的体系架构可见,每个微服务都有自己的数据库。被撤销的令牌和用户都需要单一(身份)信息源(Single Source of Truth,简称“SSOT”)。数据库需要具有高可用性,包括多主机、热备份及数据库的其他功能。其 阅读详情

JHipster登录有Remember Me选项,配置项中不勾选session可以保持24小时,勾选则为10天。

下面讲述一下JHipster对于登录超期的处理方法,这里登陆超期是指JWT的超期。

对于超期有两种情况,一种是对账户进行操作,另一种是非账户操作。前端代码如下:

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(
      tap(null, (err: HttpErrorResponse) => {
        if (err.status === 401 && err.url && !err.url.includes('api/account')) {
          this.stateStorageService.storeUrl(this.router.routerState.snapshot.url);
          this.loginService.logout();
          this.router.navigate(['']);
          this.loginModalService.open();
        }
      })
    );
  }

由于Vue没有相关处理代码,这里贴出angular代码,基本逻辑是一致的,对于非账户操作会转到登录页面要求用户重新登录。

这里特别指出,后端可能存在无需任何权限的操作,所以当token发生超期时,request依旧会受到后端处理,除非因权限不足返回401错误时,才会跳转到登录页面。

后端的是否超期是通过TokenProvider中的validateToken进行处理:

    public boolean validateToken(String authToken) {
        try {
            Jwts.parserBuilder().setSigningKey(key)
            .build()
            .parseClaimsJws(authToken);
            return true;
        } catch (JwtException | IllegalArgumentException e) {
            log.info("Invalid JWT token.");
            log.trace("Invalid JWT token trace.", e);
        }
        return false;
    }

其中JwtException包含了ExpiredJwtException,当抛出该异常,系统就不会赋予该用户任何权限,JWTFilter中代码如下:

@Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String jwt = resolveToken(httpServletRequest);
        if (StringUtils.hasText(jwt) && this.tokenProvider.validateToken(jwt)) {
            Authentication authentication = this.tokenProvider.getAuthentication(jwt);
            SecurityContextHolder.getContext().setAuthentication(authentication);
        }
        filterChain.doFilter(servletRequest, servletResponse);
    }

最后提到一点,当用户名或者密码输入错误同样会从后端返回401错误,如果需要前端提示不同错误信息,例如:“用户名和密码错误”和“用户登录超时,请重新登录”,这时需要!err.url.includes('api/account')来加以区分。

 

Good Luck,

Cheers!

STM32H7+LAN8720A之ETH与LWIP配置问题(End) 开篇介绍 由于项目中需要使用到STM32H7系列的芯片,且该系列无法移植ST的标准库,只能使用ST的HAL库,通过STM32Cube生成HAL库的基本代码。在项目开发中需要使用到STM32板载的ETH口,在简化的四层模型中充当着数据链路层的角色,我们只需添加PHY并配置好IP,即可实现基本的TCP主从机通信、UDP通信等等。 一、激光雷达3i-T1 由于使用了一款只具有网口通信的单线激光雷达,其具有TCP和UDP方式的通信方式,为了避免进行TCP中的socket报文解析和繁琐的通信握手过程,我们首先将雷达配 阅读详情

相关推荐

PyCharm+QT Designer整合

CMD下使用pip安装PyQt4或者PYQT5 这里要注意,你下载的PYQT5不包含QT designer 还要:pip3 install PyQt5-tools,好像Pyqt5中将designer分离了或者查看源码:https://github.com/altendky/pyqt5-tools,编译安装 将QT Designer整合到PyCharm的External Tools中,以后就可...

mxh的博客 6414

spring security3教程系列--如何踢出用户

本文章摘编、转载需要注明来源 http://write.blog.youkuaiyun.com/postedit/8572467   对于spring security我个人是比较喜欢的一个安全框架,我们的系统中一般需要提供强制将用户踢出的功能,这个功能security也有提供, 首先我们要操作需要获取sessionRegistry中认证用户的所有SessionInformation,然后逐个

pan-zy的专栏 1054

BeckHoff <--> ABB 机器手 Profinet 通讯

本文介绍了BeckHoff PLC与ABB机器人通过PROFINET通信的实现方案。主要内容包括:1)通信接口的详细变量定义,涵盖输入/输出信号、设备状态监控、夹爪控制等关键功能位;2)全局数据结构和变量配置说明;3)机器人任务控制程序的实现方法,包括参数校验、任务指令下发和状态监控机制;4)重点分析了任务调度功能块的代码逻辑,涉及慢速模式处理、多参数配置和执行状态判断。该方案通过结构化变量定义和模块化程序设计,实现了PLC对机器人作业的精确控制,为工业自动化系统集成提供了可靠通信范例。

工控智联驿站 1032

注册注销登录退出jabber

 注册Jabber用户static BOOL CALLBACK JabberRegisterDlgProc( HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam ){       ThreadData *thread, *regInfo;        switch ( msg ) {       case WM_I

hurtmanzc的专栏 3502

带隙基准电路实战:温度补偿与流片调优全解析

带隙基准(BGR)是模拟芯片中实现高精度、低温漂电压参考的核心电路,其本质是利用硅材料禁带宽度的物理稳定性,通过PTAT(正温度系数)与CTAT(负温度系数)电压的加权叠加抵消温度影响。原理上需兼顾一阶线性补偿与二阶曲率校正,技术价值在于支撑ADC/DAC/LDO等关键模块的精度与可靠性。典型应用场景涵盖车规级MCU、工业传感器和高精度电源管理芯片。工程落地难点集中于工艺偏差、运放失调、寄生效应及版图热电耦合——这正是‘带隙基准设计’与‘带隙基准调优’的根本分野。本文聚焦真实流片经验,深入拆解Widlar架

weixin_42628280的博客 254

技术解析:ChangeFormer——基于Transformer的孪生网络在遥感变化检测中的创新应用

本文深入解析了ChangeFormer模型在遥感变化检测中的创新应用,该模型基于Transformer架构和孪生网络(Siamese Network),显著提升了变化检测的精度和效率。通过详细的技术实现和实战经验分享,展示了其在建筑物变化、森林监测等场景中的卓越表现,为相关领域的研究和应用提供了有力工具。

weixin_29102619的博客 495

跟着JHipster学做项目 (6) 安全访问控制(上)JWT的Spring Boot应用

通过配置可以生成JHipster运用JWT进行访问控制的一套代码,主要是通过JWTFilter过滤器,并把它置于UsernamePasswordAuthenticationFilter前端对用户进行Authentication(认证)和Authorization(授权)控制,此外对于认证或者授权失败是采用前文提到的异常处理。 这里需要引入的依赖如下: <dependency> <groupId>org.springframework.boot</groupId&g

java_augur的专栏 1480

TS808效果器制作教程

TS808效果器制作教程 可以在立创商城购买到大部分的电阻电容和IC,音频接口,踩钉,电位器和电源接口可以去某宝看看都买得到的。链接https//pan.baidu.com/s/1QId1eIE3fJ2u5NLBSISvGA。安装过程过于繁琐,把所有元器件按照图纸焊接完成就可以调试了,祝你们成功!这是TS808经典效果器制作过程的记录。IC是JRC4558。...

qq_18948149的博客 3423

跟着JHipster学做项目 (6) 安全访问控制(下)JWT的Vue前端应用

JHipster前端对JWT处理主要包括两个方面: 请求后端授权后对token进行解析。 从localStorage或者sessionStorage中获取token并放入请求报文。 JHipster没有采用Spring Boot默认的formData以及/login, 而是json报文,/authenticate,代码如下: public doLogin(): void { const data = { username: this.login, password: this.passw

java_augur的专栏 559

双目相机模型

近期想研究一下 双目相机 的内容,故先把 理论 弄清楚! 一、双目相机模型 针孔相机模型描述了 单个相机 的成像模型。然而,仅根据一个像素,我们是无法确定 这个空间点的具体位置的。这是因为,从相机光心到归一化平面连线上的所有点,都可以 投影至该像素上。只有当 P 的深度确定时(比如通过双目或 RGB-D 相机),我们才能确 切地知道它的空间位置。 测量像素距离(或深度)的方式有很多种,像人眼就可以根据左右眼看到的景物差异 (或称视差)来判断物体与我们的距离。双目相机的原理亦是如..

努力努力努力 2408

基于YOLOv8的野生菌菇检测、识别与分类系统

YOLOv8是YOLO系列模型的最新版本,继承了YOLO系列高效、精确的特点。YOLOv8采用了新的网络架构,并优化了推理速度和检测精度。与传统的目标检测算法(如Faster R-CNN)不同,YOLO模型通过一次前向传播同时完成目标定位与分类,因而具有非常高的计算效率。

YOLO 1284

Spring security--jwt身份验证

项目背景:项目由springboot构建,通过jwt进行认证和授权,这是无连接、无状态的。要实现用户唯一性,无法通过session等其他入手。 前期分析: 认证这里是通过fliter获取请求中的token public class JWTFilter extends GenericFil...

chuqian1510的博客 454

6、 实时家禽健康识别与疾病检测系统的深入解析

本文深入解析了一种基于物联网的实时家禽健康识别与疾病检测系统,结合图像分析和音频分析技术,能够有效识别病鸡并防止疾病传播。文章详细介绍了系统的测试环境、数据采集与预处理方法、图像与音频分析流程,并对系统性能进行了全面评估。最后提出了未来改进方向,包括多模态融合、深度学习应用及实时性优化等。

weixin_28840811的博客 185

阿敦软件技术框架-跟着JHipster学做项目专栏

跟着JHipster学做项目(1)- MockMvc用法技巧 跟着JHipster学做项目(2) - 使用Swagger2生成API文档 (上)生成swagger的asciidoc文件 跟着JHipster学做项目(3) - Maven的使用技巧(上)分离jar和依赖 跟着JHipster学做项目(3) - Maven的使用技巧(下)去掉因lifecycle引起的红叉 跟着JHipster学做项目 (4)审计功能 跟着JHipster学做项目 (5) 异常处理(上)Spring Boot后端 跟

java_augur的专栏 4540

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Jhipster实战中遇到的知识点-开发记录

采用JHipster8.1.0开发的只能算命系统,后台采用chatgpt模型

celebrateyang的博客 1063

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Jhipster之JWT认证解析

1.token生成 在用户登录时,请求/api/authenticate,Controller中注入AuthenticationManager用于验证用户名和密码是否正确,验证通过使用tokenProvider创建token并返回给前端 @PostMapping("/authenticate") @Timed public ResponseEntity&lt;JWTToken&gt; a...

york_饭的博客 2236

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

跟着JHipster学做项目 (16) Spring Boot在JWT添加userId

Spring boot默认User没有包含userId信息,在通过SecurityUtils获取userId会很不方便,下面介绍一个简便的方式可以在获取当前用户信息时,能够包含userId。 JHipster是通过一个实现UserDetailService的接口DomainUserDetailsService类,来对登录信息进行认证。 但是在类UserJWTController中,认证的方法如下: Authentication authentication = authenticationManag

java_augur的专栏 885

一个简单的Filter拦截器,自定义返回异常

Filter拦截器简单实现

weixin_43911325的博客 1403

JHipster中文文档(一)

介绍 技术栈 客户端技术栈 服务端技术栈 微服务技术栈 生产环境支持 环境设置 安装JHipster 安装方式 使用Yarn进行本地安装 当使用Angular时的快速配置 当使用AngularJS 1.x时的快速配置 其他组件安装 其他问题 Jhipster核心任务 创建一个应用 快速入门 生成应用时的问题 Q1. Which type of application wo...

alleyz 2万+

JHipster介绍:一个适用于Java和JavaScript的全栈框架

JHipster是一个用于生成混合Java和JavaScript应用程序的成熟框架,它支持你所喜爱的开发工具,并提供监控和其他开箱即用的管理功能。JHipster是一个历史悠久、雄心勃勃的Java和JavaScript混合项目,致力于使用现代反应式前端来简化全栈Java应用程序的开发。JHipster开发团队持续发布新版本,以跟上行业变化。让我们通过构建一个简单的应用程序来了解这个框架能做什么。开箱即用,JHipster在前端支持React、Vue和Angular。基于JPA的关系型数据存储,其中。...

Q54665642ljf的博客 1998

Jhipster权限控制设计及改进

com.cloud.gate.config.MicroserviceSecurityConfiguration.javapublic void configure(HttpSecurity http) throws Exception { http .csrf() .ignoringAntMatchers("/h2-console/**") .

bob的专栏 2582

Spring Cloud Jhipster (代码生成器)

1.介绍 Jhipster是基于nodejs+yeoman的java代码生成器。它集成了spring cloud的一些技术,采用问答式方法,构建一整套技术解决方案。 使用到的技术如下: 客户端: 响应式web设计HTML5BootstrapAngularJS用Angular Translate支持国际化可选的Sass支持css设计 用Bower 安装JavaScrip

jack281706 6592

jhipster-选择uaa认证或者JWT认证的时候接口调用方式

本文演示的是get方式: Authorization:Bearer上面登录返回的token 如果选择是JWT的方式,其实调用也是一样的,拿到token再去调用api,当然在网关里已经不需要了,因为已经拿到token了 ...

渔人 1155

jhipster框架学习(二)

介绍由JHipster生成的微服务       在《jhipster框架学习(一)》那篇文章里面我们已经介绍了jhipster的架构和每个微服务项目启动过程中可能遇到的小问题。现在我就介绍一下我自己使用jhipster框架生成的一个demo,我一共生成了两个微服务项目----网关gateway和用户微服务user,服务中心registry是在官网的github上下载的。先看一下我启动之后的服务中

宁静致远 5437

JHipster技术栈理解 - UAA原理分析

本文简要分析了UAA的认证机制和部分源码功能。 UAA全称User Account and Authentication。 相关源码都是通过Jhipster生成,包括UAA,Gateway,Identity。Jhipster简介请参考这里。 1 OAuth2认证模式 1.1 密码模式 密码模式(Resource Owner Password Credentials)中,用户向客户端提供自己的用...

weixin_34146410的博客 775

JHipster 纯后端怎么替换原生swagger并在swagger配置jwt验证

最近刚入手学习JHipster,项目要进行完全的前后端分离,在jhipster --skip-client生成开发环境后,在完全脱离前端的情况下,想要通过类似Spring-boot后端配置swagger来进行API接口展示和调用测试 &lt;dependency&gt; &nbsp; &nbsp; &lt;groupId&gt;io.springfox&lt;/groupId&gt; &nb...

u013594885的博客 1536
上一篇: eclipse快捷键Ctrl + Alt + ↓失灵问题
下一篇: 跟着JHipster学做项目 (10) 缓存的应用
java_augur
博客等级 码龄22年 67粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值