Spring Security 核心流程全解析:认证与权限控制的底层逻辑
Spring Security 的核心能力分为认证(Authentication) 和权限(Authorization) 两部分,分别对应 “确认用户身份” 和 “判断用户是否有权访问资源”。从 “请求拦截→认证处理→权限校验” 三个维度,逐行拆解流程中的关键组件与数据流转。
认证流程:从登录请求到身份确认
认证流程的核心是 “获取用户凭证→校验凭证→存储认证信息”,入口是 UsernamePasswordAuthenticationFilter(处理表单登录请求),最终通过 AuthenticationManager 和 UserDetailsService 完成校验。
1. 流程入口:UsernamePasswordAuthenticationFilter 拦截登录请求
UsernamePasswordAuthenticationFilter 是处理 POST /login(或自定义登录路径)请求的专用过滤器,继承自 AbstractAuthenticationProcessingFilter,其核心逻辑在父类的 doFilter() 方法中触发。
步骤 1:AbstractAuthenticationProcessingFilter#doFilter—— 过滤器核心调度
所有登录请求首先进入该方法,判断是否需要认证并触发后续逻辑:
1 | public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { |