spring - 在过滤器中处理可选的 JWT 身份验证是个好主意吗?
问题描述
我是 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 Security 文档指向代码库中基于 JWT 的 WebFlux 资源服务器示例。
它不是基于 Kotlin 的,所以我刚才也发布了一个我自己的示例;希望它可以帮助您入门。
至于您的问题,是的,您可以创建自己的过滤器,尽管 Spring Security 附带BearerTokenAuthenticationFilter
的过滤器已经完成了您的过滤器可能会做的事情。第一个链接示例手动添加此过滤器,而第二个示例让 Spring Boot 添加它。
推荐阅读
- javascript - 尝试从反应功能组件方法返回多个值
- android - Android资源链接失败
- javascript - 创建一列,该列是数据表中其他两列的总和
- javascript - 遍历 Array 中的 JSON 对象
- c# - 两个应用程序读/写时Redis数据不一致
- deep-learning - 独立于分辨率的 UNet 实现?
- c# - 使用 Xaramin 和 c# 向用户显示图像
- svn - 是否可以在 SVN Authz 文件中使用通配符?
- visual-studio-2010 - ITMS-90809:已弃用的 API 使用 - 即使应用了解决方案,仍会收到警告
- c# - 删除包含字符串的行并更改剩余行的值