Java 使用HandlerInterceptor或AbstractAuthenticationProcessingFilter的Spring身份验证
springJava 使用HandlerInterceptor或AbstractAuthenticationProcessingFilter的Spring身份验证,java,spring,spring-security,Java,Spring,Spring Security,springorg.springframework.web.servlet.HandlerInterceptor和org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter 我计划为我的应用程序添加身份验证。 但在HandlerInterceptor Doc里说 在异步处理场景中,处理程序可以在 在主线程退出而不渲染或 调用postHandle和afterCompletion回调 因
org.springframework.web.servlet.HandlerInterceptor
和org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter
我计划为我的应用程序添加身份验证。
但在HandlerInterceptor Doc里说
在异步处理场景中,处理程序可以在
在主线程退出而不渲染或
调用postHandle和afterCompletion回调
因此,在本例中,如果处理程序在单独的线程中执行,我发现中的HandlerInterceptor不适合进行身份验证
实现身份验证的最佳方法是什么?简短回答:使用Spring安全性。它支持Servlet3.x异步请求处理开箱即用。看 详细回答:
HandlerInterceptor
和AbstractAuthenticationProcessingFilter
可用于相同目的,但通常在基于Spring的项目中,身份验证/授权由Spring Security处理(AbstractAuthenticationProcessingFilter
)
HandlerInterceptor
属于Spring MVC,我在职业生涯中看到过,它用于自定义日志记录、时间测量、HTTP头操作或(用户)请求上下文增强。一个HandlerInterceptor
可以放在所有或特定的Spring MVC控制器之前,并在控制器中“生存”
相比之下,Spring Security的过滤链与集成。简化的请求流如下所示:
Container connector
V
Filter (Spring Security)
V
DispatcherServlet (Spring MVC)
V
HandlerInterceptor (Spring MVC)
V
Controller (Spring MVC)
Spring安全性可以独立于Spring MVC使用(请看一下AbstractAuthenticationProcessingFilter
,您可以看到它是从Spring MVC派生出来的,反过来又实现了它)。也就是说,您可以将身份验证/授权与Spring安全性结合到任何其他web框架中,例如JSF、GWT、Vaadin
基本上,Spring Security是一种安全性
基于javaee的企业软件应用
但是你也可以在像Swing这样的桌面应用程序中使用它。老实说,到目前为止我还没看到
在我看来,您应该依赖一个成熟且功能丰富的框架,如Spring Security或身份验证/授权。大多数情况下,这样的框架已经具备了项目所需的所有特性。许多人使用的流行框架降低了由于频繁的错误报告和安全检查而出现严重错误或安全漏洞的可能性。请不要重新发明轮子,因为在软件质量和成熟框架的灵活性方面,轮子通常跟不上步伐