security - 如何使用 Micronaut Security 将未经授权的 WWW-Authenticate 字段添加到响应标头?
问题描述
使用 Micronaut Security,我希望应用程序使用 WWW-Authenticate 标头字段响应未经授权的请求以进行基本身份验证,如下所示:
WWW-Authenticate: Basic realm="User Visible Realm"
是否可以在配置文件(即 application.yaml)中执行此操作?如果不是,您如何建议使用最少的样板来执行此操作?
我当前的安全配置:
security:
intercept-url-map:
- pattern: /**/*
access:
- isAuthenticated()
redirect:
forbidden:
enabled: false
unauthorized:
enabled: false
谢谢!
解决方案
我不知道这可以通过配置实现。
实现此目的的一种方法是服务器过滤器。下面的代码很时髦。
@Filter("/**")
class AuthenticateHeaderFilter extends OncePerRequestHttpServerFilter {
@Override
protected Publisher<MutableHttpResponse<?>> doFilterOnce(HttpRequest<?> request, ServerFilterChain chain) {
return Publishers.map(chain.proceed(request)) { response ->
if (response.status() == HttpStatus.UNAUTHORIZED) {
response.header(HttpHeaders.WWW_AUTHENTICATE, "Basic realm=\"my realm\"")
}
return response
}
}
@Override
int getOrder() {
return Integer.MIN_VALUE
}
}
推荐阅读
- expect - 使用期望循环通过交互式安装程序
- python - 根据 Pandas 中的现有列和值创建新列
- c# - 如何使用 nuget.core 将 nuget 包添加到 c# 项目文件
- c++ - 共享指针分段错误——如何正确共享 PlanningScene?
- mysql - 从相关表中搜索字段
- entity-framework - 使用实体框架获取子对象时父对象为空
- javascript - lint-staged 未在预提交时运行
- python - Python Flask 通过浏览器中的刷新图标刷新
- excel-formula - Excel总和值如果存在于另一列没有vlookup
- android - 安卓系统中的心跳