关于前后端一体项目SpringSecurity框架登陆失效,HTTPS重定向登陆页面异常的问题

现有环境是基于SpringBoot 2.6.8,然后是前后台一体化的项目。

安全框架使用的是内置版本的SpringSecurity。

场景:用户登陆,系统重启导致用户的session失效。但前端并没有跳转到对应的登录页,在HTTP的环境下可以正常跳转,但在生产环境跳转失败,并报以下错误。

页面上异常信息如下:

这里看了部分的源码,发现SpringSecurtiy中有LoginUrlAuthenticationEntryPoint的内,有对应的配置。这里是配置登陆失败跳转的地方。

	/*** Performs the redirect (or forward) to the login form URL.*/@Overridepublic void commence(HttpServletRequest request, HttpServletResponse response,AuthenticationException authException) throws IOException, ServletException {if (!this.useForward) {// redirect to login page. Use https if forceHttps trueString redirectUrl = buildRedirectUrlToLoginPage(request, response, authException);this.redirectStrategy.sendRedirect(request, response, redirectUrl);return;}String redirectUrl = null;if (this.forceHttps && "http".equals(request.getScheme())) {// First redirect the current request to HTTPS. When that request is received,// the forward to the login page will be used.redirectUrl = buildHttpsRedirectUrlForRequest(request);}if (redirectUrl != null) {this.redirectStrategy.sendRedirect(request, response, redirectUrl);return;}String loginForm = determineUrlToUseForThisRequest(request, response, authException);logger.debug(LogMessage.format("Server side forward to: %s", loginForm));RequestDispatcher dispatcher = request.getRequestDispatcher(loginForm);dispatcher.forward(request, response);return;}

所以解决方案就是,重写这个类,将请求强制改为HTTPS。

实现方案如下:

import cn.com.seecom.vnumber.common.Result;
import cn.com.seecom.vnumber.common.ResultEnum;
import cn.com.seecom.vnumber.utils.RequestUtil;
import com.alibaba.fastjson.JSON;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @author lvshiyu* @description: 重写登陆验证失效切面* @date 2024年03月13日 17:55*/
public class CustomLoginUrlAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {public CustomLoginUrlAuthenticationEntryPoint(String loginFormUrl) {super(loginFormUrl);setForceHttps(true);}@Overridepublic void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException)throws IOException, ServletException {if (RequestUtil.isAjaxRequest(request)) {response.setContentType("application/octet-stream;charset=UTF-8");response.getWriter().println(JSON.toJSON(new Result(ResultEnum.TOKEN_EXPIRED)));return;} else {super.commence(request, response, authException);}}
}

核心是setForceHttps方法

在config中配置对应的切面。

以上就解决了我的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/651651.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外http代理中的有效连通率是什么意思?

随着互联网的发展,许多人需要使用代理服务器来访问海外网站或绕过地理限制,在选择一个可靠的海外HTTP代理时,了解其有效连通率是至关重要的。 本文将解释有效连通率的含义,并提供详细的测试步骤,帮助您评估一家IP代理…

有什么因素会影响IP稳定性?

IP稳定性指的是IP地址在一段时间内保持不变的能力,对于网络连接的安全性和可靠性至关重要。以下是一些可能影响IP稳定性的主要因素: 网络服务提供商(ISP)的政策:不同的ISP对于IP地址的管理和使用有不同的政策。一些IS…

探索和构建 LLaMA 3 架构:深入探讨组件、编码和推理技术(四)分组多查询注意力

探索和构建 LLaMA 3 架构:深入探讨组件、编码和推理技术(四)分组多查询注意力 Grouped-query Attention,简称GQA 分组查询注意力(Grouped-query Attention,简称GQA)是多查询和多头注意力的插值…

docker 集群管理实战mesos+zookeeper+marathon(三)

接上文mesoszookeeper管理docker集群,已安装并成功启动mesos master和mesos slave。 https://www.toutiao.com/article/7221354604351537698/?log_from6b55db495da1d_1681366356776 这个教程主要演示部署和使用marathon 1.1 marathon概述 1.2 下载和解压marath…

ip https证书360

https证书主要作用是保障网络安全,在http协议的基础上通过SSL/TLS加密技术实现安全通信协议。对客户端以及服务器之间的传输数据进行加密,确保数据的完整性和机密性,维护用户隐私。通过HTTPS协议,我们可以安全地进行在线购物、网上…

腾讯云邮件推送如何设置?群发邮件的技巧?

腾讯云邮件推送功能有哪些?怎么有效使用邮件推送? 腾讯云邮件推送以其稳定、高效的特点,受到了众多企业的青睐。那么,腾讯云邮件推送如何设置呢?又有哪些群发邮件的技巧呢?下面AokSend就来详细探讨一下。 …

k8s-身份认证与权限

认证概述 Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作。 在Kubernetes集群中,客户端通常有两类: User Account:一般是独…

LabVIEW高效目标跟踪系统

LabVIEW高效目标跟踪系统 随着机器视觉技术的飞速发展,设计和实现高效的目标跟踪系统成为了众多领域关注的焦点。基于LabVIEW平台,结合NI Vision机器视觉库,开发了一种既高效又灵活的目标跟踪系统。通过面向对象编程方法和队列消息处理器程序…

Web前端一套全部清晰 ② day2 HTML 标签之文字排版,图片、链接、音视频链接

虽然辛苦&#xff0c;我还是会选择那种滚烫的人生 —— 24.4.25 HTML初体验 1.HTML定义 HTML 超文本标记语言 超文本 —— 链接 标记 —— 标记也叫标签&#xff0c;带尖括号的文本 标签语法 开始标签 需要加粗的文字 结束标签 标签成对出现&#xff0c;中间包裹内容 <>里…

从零入门区块链和比特币(第一期)

欢迎来到我的区块链与比特币入门指南&#xff01;如果你对区块链和比特币感兴趣&#xff0c;但不知道从何开始&#xff0c;那么你来对地方了。本博客将为你提供一个简明扼要的介绍&#xff0c;帮助你了解这个领域的基础知识&#xff0c;并引导你进一步探索这个激动人心的领域。…

绘唐科技AIGC怎么激活

绘唐科技AIGC怎么激活绘唐科技AIGC怎么激活绘唐科技AIGC怎么激活绘唐科技AIGC怎么激活 这里激活免费3天体验 Docshttps://qvfbz6lhqnd.feishu.cn/wiki/D3YLwmIzmivZ7BkDij6coVcbn7W

RabbitMQ(高级)笔记

一、生产者可靠性 &#xff08;1&#xff09;生产者重连&#xff08;不建议使用&#xff09; logging:pattern:dateformat: MM-dd HH:mm:ss:SSSspring:rabbitmq:virtual-host: /hamllport: 5672host: 192.168.92.136username: hmallpassword: 123listener:simple:prefetch: 1c…