SpringSecurity6从入门到实战之默认登录页面的生成(依旧是源码级讲解,耐心看完)

SpringSecurity6从入门到实战之默认登录页面的生成

为什么我们只在SpringBoot项目中引入了依赖,访问/hello时却出现了登录的前端页面?这里我们首先先了解客户端请求发送经历了SpringSecurity中的几个默认开启的Filter.

客户端请求到登录页面生成的过程

  1. 访问地址 http://localhost:8080/hello ,会依次经过多个过滤器
  2. 当请求到达 AuthorizationFilter 时,检查发现未认证,请求被拦截,并抛出 AccessDeniedException 异常
  3. 抛出的 AccessDeniedException 异常会被 ExceptionTranslationFilter 捕获并启动身份验证,在这个 Filter 中会调用 LoginUrlAuthenticationEntryPoint 的commence 方法,要求重定向到 /login 页面
  4. 重定向到 /login ,也就是客户端发送 /login 请求
  5. /login 请求会被过滤器 DefaultLoginPageGeneratingFilter 拦截,并在过滤器中返回默认的登录页面。

详细源码流程解析

AuthorizationFilter

检查发现未认证,请求被拦截,并抛出 AccessDeniedException 异常.继续看ExceptionTranslationFilter 如何进行捕获异常

ExceptionTranslationFilter


最终会发先commence()是一个抽象方法,最终进而看到LoginUrlAuthenticationEntryPoint的commence()

也可以发现就是在这里进行重定向到/login,然后是不是还需要将登录页面返回.这里将会重新发起/login请求然后被DefaultLoginPageGeneratingFilter 拦截,返回对应的登录页面

这里已经设置了最终返回的类型为html,继续看看generateLoginPageHtml().

最终通过一个StringBuilder写入html代码进行返回写到页面上去,至此源码流程分析结束

相关推荐
2401_8788204716 分钟前
Sa-Token基础篇
java·spring boot·后端·sa-token
2301_8163743318 分钟前
Nginx下构建PC站点
java·运维·nginx
无所事事O_o27 分钟前
JAVA应用不定时卡顿问题排查过程记录
java·优化
幸福巡礼42 分钟前
【LangChain 1.2 实战(八)】Agent Middleware 实战 —— 动态路由、监控、安全与容错
java·安全·langchain
Byron__1 小时前
Java JVM核心知识点复习笔记
java·jvm·笔记
我是Superman丶1 小时前
Docker 命令自用
运维·docker·容器
程序员小白条1 小时前
别盲目卷算法!2026 程序员\&大学生,最稳的 AI 技术进阶路线全梳理
java·网络·人工智能·网络协议·http·面试
启山智软1 小时前
【 商城系统源码:Java与PHP的区别】
java·开发语言·php
练习时长两年半的程序员小胡1 小时前
Java程序员转大模型应用开发专题(一):核心基础概念
java·开发语言·transformer·自注意力
weixin_lizhao1 小时前
50天独立打造企业级API网关(二):安全防护体系与弹性设计
java·spring boot·安全·spring cloud·gateway