【问题标题】:Where to write authorization in spring boot? In spring interceptor or filter?在spring boot中在哪里写授权?在弹簧拦截器或过滤器中?
【发布时间】:2020-03-26 14:51:07
【问题描述】:

我目前正在开发一个微服务架构的应用程序,在 Spring Boot 中使用 OAuth 作为身份验证。由于我的授权服务器是一个单独的微服务,因此我不能对资源服务器中的资源使用 Spring 的基于注释的基于角色的授权。因此,我正在编写自定义实现以在到达资源之前检查角色及其访问权限。我有两个选择,要么在拦截器中执行,要么在过滤器中执行。 哪个最适合这个授权?

【问题讨论】:

  • 为什么要编写自定义实现?分离授权服务器和资源服务器是 OAuth 的重点,Spring Security OAuth2 为不透明令牌或 JWT 提供了开箱即用的支持。

标签: java spring-boot authorization


【解决方案1】:

在我看来,过滤器和拦截器之间最大的区别之一是:

过滤器只适用于J2EE web应用程序,不能在应用服务器之外使用,拦截器可以工作在不同的组件中,不依赖于web层,总之拦截器比过滤器有更广泛的领域。如果您打算将某些组件移出容器,则应考虑使用拦截器。

过滤器更多地在请求/响应域中起作用,而拦截器更多地在方法执行域中起作用。

如果您需要做一些可能影响对您的应用程序的请求或响应的事情,例如日志记录、安全性、审计,或者您会影响到它们的数据,您的选项是过滤器,不要忘记那些提供的插件能力。

参考:Interceptors Or Filters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2020-01-21
    • 2012-07-27
    相关资源
    最近更新 更多