【问题标题】:Is it a good idea to handle optional JWT Authentication in Filter?在过滤器中处理可选的 JWT 身份验证是个好主意吗?
【发布时间】:2020-05-26 21:08:43
【问题描述】:

我是 Spring Boot 新手,我目前的项目是使用 Spring Webflux 开发的 REST API。目标是拥有一个具有可选 JWT 令牌的端点,允许您匿名或不匿名创建事物。但据我所知,Spring Security 的所有入门指南都非常复杂,并且使用 Spring MVC。

现在我的想法是创建一个 HandlerFilterFunction 看起来像

class AuthenticationFilter : HandlerFilterFunction<ServerResponse, ServerResponse> {
    override fun filter(request: ServerRequest, next: HandlerFunction<ServerResponse>): Mono<ServerResponse> {
        val authHeader = request.headers().header("Authorization").firstOrNull()
        // get user from database
        request.attributes()["user"] = user
        return next.handle(request)
    }
}

并将其添加到 router {...} bean。

这是个好主意,还是我应该换一个路由器?如果是这样,有人可以向我指出 Spring Webflux 的 JWT 教程。

【问题讨论】:

标签: spring spring-security jwt spring-webflux


【解决方案1】:

Spring Security docs 指向代码库中的a JWT-Based WebFlux Resource Server sample

不是基于Kotlin的,所以我刚才也发了a sample of my own;希望它可以帮助您入门。

至于您的问题,是的,您可以创建自己的过滤器,尽管 Spring Security 附带了 BearerTokenAuthenticationFilter,它已经完成了您的过滤器可能会做的事情。第一个链接示例手动添加此过滤器,而第二个示例让 Spring Boot 添加它。

【讨论】:

  • 这对我的项目来说太多了。我只需要一个简单的 JWT 身份验证而不使用 OAuth。
  • 什么框架要求你做的太多了?
  • Oauth 需要一个 oauth 提供程序,我不需要这个项目
  • 您打算如何验证令牌的正确性? (如果您有兴趣,这里最好有一个聊天室。)
  • 是的,我真的很想和你聊天并更好地了解
猜你喜欢
  • 2019-09-28
  • 2014-07-24
  • 1970-01-01
  • 2018-11-29
  • 2013-11-09
  • 1970-01-01
  • 2018-10-21
  • 2018-09-13
  • 2018-06-13
相关资源
最近更新 更多