spring-security 将自定义请求头添加到Sping Boot 中的每个API

368yc8dk  于 2022-11-11  发布在  Spring
关注(0)|答案(3)|浏览(289)

我尝试将自定义请求头添加到每个API,我可以通过向每个API添加一段代码来实现

`public ResponseDTO setNames(@RequestHeader(value="my-header",required = false HttpServletRequest httpServletRequest) throws Exception {}`

但是我希望这是自动完成的,就像我们在创建新API时默认使用授权头一样。
enter image description here

5uzkadbs

5uzkadbs1#

如果使用的是springdoc-openapi,则可以使用以下命令

@Configuration
class CustomizeSpringDoc {
    @Bean
    fun publicApi(): GroupedOpenApi {
        return GroupedOpenApi.builder()
            .group("add-auth-header")
            .addOperationCustomizer { operation, handlerMethod ->
                operation.parameters.add(
                    HeaderParameter()
                        .name("Authorization")
                        .description("Access Token")
                )
                operation
            }
            .build()
    }
}

如果您使用的是spring-fox,则可以返回以下链接globalRequestParameters:http://springfox.github.io/springfox/docs/current/#quick-start-guides

aydmsdu9

aydmsdu92#

您可以在您的Spring-boot项目中使用OpenAPI specification (previously Swagger specification),在中,您可以定义API以及Request/Response头文件,以及您可能希望返回的任何错误模型或您希望捕获的任何其他自定义字段!
通过定义,您将拥有提及required, minLength, maxLength等属性的权限
openAPI插件将处理其余的事情!

您可以参考这些链接浏览一下!

https://www.javainuse.com/spring/boot_swagger3
https://www.baeldung.com/spring-rest-openapi-documentation

7z5jn7bk

7z5jn7bk3#

要对每个请求进行标头验证,可以使用FilterHandlerInterceptors
Filters会在请求到达DispatcherServlet之前拦截请求,这使它们非常适合于粗粒度任务,例如:

  • 身份验证
  • 日志记录和审核
  • 图像和数据压缩
  • 我们希望从SpringMVC中分离的任何功能

另一方面,HandlerIntercepors拦截DispatcherServlet和我们的Controllers之间的请求,这是在Spring MVC框架中完成的,提供对Handler和ModelAndView对象的访问。
这减少了重复,并允许更细粒度的功能,例如:

  • 处理跨领域的问题,如应用程序日志记录
  • 详细的授权检查
  • 操作Spring上下文或模型

来源:https://www.baeldung.com/spring-mvc-handlerinterceptor-vs-filter

相关问题