gpt4 book ai didi

java - 使用 HandlerInterceptor 或 AbstractAuthenticationProcessingFilter 进行 Spring 身份验证

转载 作者:搜寻专家 更新时间:2023-10-31 20:01:05 25 4
gpt4 key购买 nike

spring org.springframework.web.servlet.HandlerInterceptororg.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter 用法有什么区别

我计划为我的应用程序添加身份验证。但是在 HandlerInterceptor Doc 中它说,

In an async processing scenario, the handler may be executed in a separate thread while the main thread exits without rendering or invoking the postHandle and afterCompletion callbacks.

所以在这种情况下,如果处理程序在单独的线程中执行,我发现 HandlerInterceptor 不适合进行身份验证。

实现身份验证的最佳方式是什么?

最佳答案

简答:使用 Spring Security。它开箱即用地支持 Servlet 3.x 异步请求处理。查看documentation .

长答案:HandlerInterceptorAbstractAuthenticationProcessingFilter 可用于相同目的,但通常在基于 Spring 的项目中,身份验证/授权由Spring Security(AbstractAuthenticationProcessingFilter)。

HandlerInterceptor 属于 Spring MVC 并且 - 我在职业生涯中到目前为止所看到的 - 用于自定义日志记录、时间测量、HTTP header 操作或(用户)请求上下文增强。 HandlerInterceptor 可以放在所有或特定的 Spring MVC Controller 之前,并且“存在于”DispatcherServlet 中。 .

相比之下,Spring Security的过滤器链集成了javax.servlet.Filter .简化的请求流程如下所示:

Container connector
V
Filter (Spring Security)
V
DispatcherServlet (Spring MVC)
V
HandlerInterceptor (Spring MVC)
V
Controller (Spring MVC)

Spring Security 可以独立于 Spring MVC 使用(看看 AbstractAuthenticationProcessingFilter,您会发现它派生自 GenericFilterBean,后者又实现了 Filter)。也就是说,您可以将身份验证/授权与 Spring Security 合并到任何其他 Web 框架中,例如JSF、GWT、Vaadin。

Spring Security 主要是 used

a Java EE-based enterprise software application

但您也可以在 Swing 等桌面应用程序中使用它。老实说,到目前为止我还没有看到。

在我看来,您应该依赖成熟且功能丰富的框架,例如 Spring Security 或 Apache Shiro用于身份验证/授权。大多数时候,此类框架已经具备您的项目所需的所有功能。一个被许多人使用的流行框架减少了由于频繁的错误报告和安全检查而导致严重错误或安全漏洞的可能性。请不要重新发明轮子,因为它通常无法跟上成熟框架在软件质量和灵 active 方面的步伐。

关于java - 使用 HandlerInterceptor 或 AbstractAuthenticationProcessingFilter 进行 Spring 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33499830/

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