epr*_*ats 5 security spring-security jwt
遵循有关如何在 Spring Boot 应用程序中实现 JWT 身份验证的好教程(https://auth0.com/blog/implementing-jwt-authentication-on-spring-boot/),我发现 /login 是由过滤器而不是控制器。这不是 Bruno 的任性,Spring 为自己提供了一个过滤器(UsernamePasswordAuthenticationFilter 等)。
为什么要使用过滤器?是不是因为它被放置在授权过滤器之前,这样我们就可以拦截新的登录尝试而不受身份验证过滤器的影响?
谢谢!安瑞克
spring-security过滤器链是核心概念之一。spring-security 文档的简介解释了以下好处:
Spring Security 的 Web 基础设施完全基于标准 servlet 过滤器。[...]
Spring Security 在内部维护一个过滤器链,其中每个过滤器都有特定的职责,并且根据需要的服务在配置中添加或删除过滤器。
一般来说:您使用一个框架spring来处理标准应用程序流程,例如您的案例中的身份验证和登录。spring-security处理这个问题的概念是过滤器链。由于使用框架会带来一些回报(例如开销),因此强烈建议您使用该框架提供的可能性。
在您的情况下,/login由 处理UsernamePassworAuthenticationFilter。该过滤器带来一些用于登录过程的标准逻辑并处理身份验证,因此不由控制器处理。
过滤器 (
UsernamePassworAuthenticationFilter) 调用配置AuthenticationManager来处理每个身份验证请求。认证成功或认证失败后的目的地分别由AuthenticationSuccessHandler和AuthenticationFailureHandler策略接口控制。过滤器具有允许您设置这些属性的属性,以便您可以完全自定义行为
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |