gpt4 book ai didi

security - 为什么身份验证应该在过滤器中而不是在 Controller 中实现?

转载 作者:行者123 更新时间:2023-12-04 13:44:20 24 4
gpt4 key购买 nike

遵循有关如何在 Spring Boot 应用程序中实现 JWT 身份验证的好教程 ( https://auth0.com/blog/implementing-jwt-authentication-on-spring-boot/ ),我看到/login 是由过滤器而不是 Controller 处理的。这不是布鲁诺的任性,Spring 为自己提供了一个过滤器(UsernamePasswordAuthenticationFilter 等)。

为什么要使用过滤器?是不是因为它被放置在授权过滤器之前,这样我们就可以在不受身份验证过滤器影响的情况下拦截新的登录尝试?

谢谢!
恩瑞克

最佳答案

过滤器链是 spring-security 之一核心概念。 spring-security的介绍documentation对好处的解释如下:

Spring Security's web infrastructure is based entirely on standard servlet filters. [...]

Spring Security maintains a filter chain internally where each of the filters has a particular responsibility and filters are added or removed from the configuration depending on which services are required.


一般而言:您使用像 spring 这样的框架用于处理标准应用程序流程,例如您的案例身份验证和登录。 spring-security的概念处理这个是过滤器链。由于使用框架会带来一些返回(例如开销),因此强烈建议使用框架为您提供的可能性。
在你的情况下 /login UsernamePassworAuthenticationFilter 处理.此过滤器带来了一些用于登录处理的标准逻辑并处理身份验证,因此不由 Controller 处理。

The filter (UsernamePassworAuthenticationFilter) calls the configured AuthenticationManager to process each authentication request. The destination following a successful authentication or an authentication failure is controlled by the AuthenticationSuccessHandler and AuthenticationFailureHandler strategy interfaces, respectively. The filter has properties which allow you to set these so you can customize the behaviour completely

关于security - 为什么身份验证应该在过滤器中而不是在 Controller 中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51634553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com