java - 在 Spring Security 中同时拥有 Servlet Filter 和 AuthenticationProvider 有什么意义?

标签 java authentication spring-security authorization servlet-filters

阅读文档后我有点困惑...似乎您可以使用任一机制进行完整的身份验证,而无需使用其他机制。您可以在 AuthenticationProvider 中访问请求,并且可以在 servlet 过滤器中设置安全上下文。那么为什么两者都要呢?

最佳答案

基本上,如果您选择这样做,您可以在基于 servlet 的 Web 应用程序的过滤器中执行任何(自定义)身份验证和授权。

但是,spring-security 不仅仅适用于基于 servlet 的 Web 应用程序。

AuthenticationProvider 实现可用于通过基于 servlet 的 Web 应用程序的许多不同过滤器进行身份验证,但也可以通过例如基于套接字的网络应用程序,甚至 native 非 Web 应用程序,并且通常完全不知道您的应用程序所依赖的通信协议(protocol)。

通过实现您的自定义 AuthenticationProvider 接口(interface),您将遵循关注点分离原则,并且稍后您将能够在必要时从不同的过滤器或从其他代码部分委托(delegate)给它,而无需重复您的代码。

关于java - 在 Spring Security 中同时拥有 Servlet Filter 和 AuthenticationProvider 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60357385/

相关文章:

java - 逆向3数组列表

ruby - 跨网站和 gem 客户端处理用户身份验证的最佳方式

node.js - Cloud9 IDE 上 Nodejs 中的 Redis : [Error: Auth error: undefined]

java - Spring Security OAuth2 数据库——错误凭证错误

java - 没有可用的 'xxx.xxx.xxx.xxx.MyUserDetailsService' 类型的合格 bean : expected at least 1 bean which qualifies as autowire candidate

Java SSH MySQL 连接

java - 在 Java 中导入包

java - Netty UDP 服务器可以有多个 eventloop 线程吗?

php - 来自 Abraham 的 TwitterOAuth - 无法验证您的身份;错误: 32

java - SecurityContextHolder.getContext().getAuthentication() 返回 null