当前位置: 首页 > news >正文

云建站不能用了吗英文网站设计哪家好

云建站不能用了吗,英文网站设计哪家好,单页竞价网站,苏州企业网站制作设计公司Spring Security 的安全功能通过一系列过滤器(Filter)组成的链式结构实现,每个过滤器负责处理特定的安全任务。这些过滤器按特定顺序执行,形成过滤器链(Security Filter Chain)。以下是其核心过滤器及工作原…

Spring Security 的安全功能通过一系列过滤器(Filter)组成的链式结构实现,每个过滤器负责处理特定的安全任务。这些过滤器按特定顺序执行,形成过滤器链(Security Filter Chain)。以下是其核心过滤器及工作原理的详细解析:


一、默认过滤器链(按执行顺序)

过滤器名称(类名)作用
1. SecurityContextPersistenceFilter从 Session 加载或创建 SecurityContext(存储认证信息)。
2. HeaderWriterFilter写入安全相关的 HTTP 头(如 X-Content-Type-OptionsX-Frame-Options)。
3. CsrfFilter检查 CSRF Token(防止跨站请求伪造)。默认保护非 GETHEADTRACEOPTIONS 请求。
4. LogoutFilter处理注销请求(默认路径 /logout),清除安全上下文和 Session。
5. UsernamePasswordAuthenticationFilter处理表单登录(默认路径 /login),提取用户名密码并认证。
6. DefaultLoginPageGeneratingFilter生成默认登录页(当未配置自定义登录页时生效)。
7. DefaultLogoutPageGeneratingFilter生成默认注销页。
8. BasicAuthenticationFilter处理 HTTP Basic 认证(Authorization: Basic <token>)。
9. RequestCacheAwareFilter缓存请求,用于登录成功后恢复原始请求(如访问 /admin 被拦截后跳转登录页)。
10. SecurityContextHolderAwareRequestFilter包装请求对象(HttpServletRequest),提供安全相关方法(如 isUserInRole)。
11. AnonymousAuthenticationFilter为未认证用户分配匿名身份(默认角色 ROLE_ANONYMOUS)。
12. SessionManagementFilter管理会话(如并发控制、会话固定攻击防护)。
13. ExceptionTranslationFilter处理认证/授权异常,触发 AuthenticationEntryPoint(如跳转登录页)或返回 403。
14. FilterSecurityInterceptor最终授权决策,调用 AccessDecisionManager 验证用户是否有权访问资源。

二、过滤器链工作原理

1. 责任链模式(Chain of Responsibility)

执行顺序:请求按过滤器链的顺序依次通过每个过滤器,每个过滤器可选择处理请求或传递给下一个过滤器。
终止条件:当某个过滤器处理完请求并直接返回响应时,后续过滤器不再执行。

2. 核心流程
HTTP 请求 → 过滤器1 → 过滤器2 → ... → 过滤器N → 访问资源↓          ↓               ↓处理逻辑    处理逻辑         处理逻辑

认证流程
UsernamePasswordAuthenticationFilter 提取凭证并认证 → 存储 AuthenticationSecurityContextHolder
授权流程
FilterSecurityInterceptor 最终验证权限 → 若未授权则抛出 AccessDeniedException
异常处理
ExceptionTranslationFilter 捕获异常 → 触发登录页跳转或返回 403。

3. 关键交互示例
用户访问受保护资源(如 `/admin`):
1. SecurityContextPersistenceFilter 加载 SecurityContext(若已登录则存在 Authentication)。
2. AnonymousAuthenticationFilter 为未认证用户赋予匿名身份。
3. FilterSecurityInterceptor 检查权限 → 发现未认证 → 抛出 AccessDeniedException。
4. ExceptionTranslationFilter 捕获异常 → 调用 AuthenticationEntryPoint 跳转登录页。
5. 用户提交登录表单 → UsernamePasswordAuthenticationFilter 认证成功 → 更新 SecurityContext。
6. 用户再次访问 `/admin` → FilterSecurityInterceptor 验证权限 → 允许访问。

三、如何查看和配置过滤器链

1. 查看默认过滤器链

在日志中设置 DEBUG 级别:

logging.level.org.springframework.security.web.FilterChainProxy=DEBUG

启动应用后,日志会输出默认过滤器链顺序:

Security filter chain: [WebAsyncManagerIntegrationFilterSecurityContextPersistenceFilterHeaderWriterFilterCsrfFilterLogoutFilter...
]
2. 自定义过滤器链

通过 HttpSecurity 配置添加、移除或调整过滤器:

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http// 禁用默认表单登录过滤器.formLogin(AbstractHttpConfigurer::disable)// 添加自定义过滤器(如 JWT 过滤器).addFilterBefore(jwtAuthFilter(), UsernamePasswordAuthenticationFilter.class)// 配置权限规则.authorizeHttpRequests(auth -> auth.requestMatchers("/admin/**").hasRole("ADMIN").anyRequest().permitAll());return http.build();
}

四、常见过滤器的扩展场景

1. 添加自定义过滤器
public class CustomAuthFilter extends OncePerRequestFilter {@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) {// 自定义认证逻辑(如验证请求头中的 Token)chain.doFilter(request, response);}
}// 注册到过滤器链
http.addFilterBefore(new CustomAuthFilter(), BasicAuthenticationFilter.class);
2. 禁用默认过滤器
http.csrf(csrf -> csrf.disable()); // 禁用 CSRF 防护
3. 调整过滤器顺序
// 将自定义过滤器插入到 CsrfFilter 之后
http.addFilterAfter(new CustomFilter(), CsrfFilter.class);

五、总结

Spring Security 的过滤器链通过责任链模式实现灵活的安全控制,核心特点包括:

  1. 模块化:每个过滤器专注单一职责(如认证、授权、CSRF 防护)。
  2. 可扩展:支持自定义过滤器插入任意位置。
  3. 顺序敏感:过滤器执行顺序影响安全行为(如 CsrfFilter 必须在认证过滤器之前执行)。

理解过滤器链的组成和执行逻辑,是调试安全问题和实现复杂安全需求的关键。

http://www.dtcms.com/a/479408.html

相关文章:

  • 青海建设信息网站网站开发专业分析
  • 怎么给搞笑网站做文案网站安全建设
  • 网站建设及解决方案房地产公司 网站建设
  • 【升级Cli5】记一次vue2由cli4升级到cli5的实际操作
  • 【深度学习理论基础】马尔可夫链
  • 利用python做网站用ps做网站页面的大小
  • 阿里云免费建站最新网页游戏公益服
  • 飞控信号模块技术要点与难点分析
  • PHP 变量
  • Java 大视界 -- Java 大数据中的数据隐私保护技术在多方数据协作中的应用
  • 打开网站8秒原则做门户网站的系统
  • 基于spark的抖音短视频数据分析及可视化
  • wordpress导航网站模板邢台网站建设好蜘蛛
  • 欧美(美股、加拿大股票、墨西哥股票)股票数据接口文档
  • 做网站的分析报告案例网站用cms
  • 四川省建设厅官方培训网站江苏建设教育网官网入口
  • 国内永久免费crm系统网站推荐有哪些网页设计作业讲解
  • 上海免费网站建设服务广告推广平台哪个好
  • 深圳市龙岗区住房和建设局官方网站莱西建设局官方网站
  • 彩票系统网站开发自己做的网站如何链接到百度
  • langsmith进行agent评估的方法
  • 手机微信网站怎么做的百度js转wordpress
  • 网站开发报价范围城乡企业建设部网站
  • 9、C/C++ 内存管理详解:从基础到面试题
  • 筑巢网站建设怎么样建站工具介绍
  • 为什么自己做的网站打开是乱码效果图网站有哪些
  • 分布式计算框架:从批处理到流处理的演进
  • 静态方法没有独立的实例
  • Qt基础:查找数据容器中的最大和最小值
  • 木兰宽松许可证(Mulan PSL v2)简介vsApache2.0对比分析