首页 > 解决方案 > 如何使用 Micronaut Security 过滤请求?[Micronaut 安全 1.3.1]

问题描述

我使用 JWT 令牌来保护我的应用程序。application.yml 中的设置按预期工作。

现在我正在尝试过滤所有到达控制器的请求。

例如:

  1. 如果请求路径变量不匹配,我想拒绝呼叫,但前端有例外。
  2. 如果请求路径变量匹配,我想将调用转发给控制器。

我找到了两种不同的方法:HttpServerFilter 和 SecurityFilter。

过滤器类别:

@Filter("/**")
public class MySecurityFilter extends SecurityFilter {

 @Override
 protected Publisher<MutableHttpResponse<?>> doFilterOnce(HttpRequest<?> request,
   ServerFilterChain chain) {
   checkRules(request, chain, null, null, false);
   return super.doFilterOnce(request, chain);
 }

 @Override
 protected Publisher<MutableHttpResponse<?>> checkRules(HttpRequest<?> request,
   ServerFilterChain chain, @Nullable RouteMatch routeMatch,
   @Nullable Map<String, Object> attributes, boolean forbidden) {
   return super.checkRules(request, chain, routeMatch, attributes, forbidden);
 }
}

似乎 SecurityFilter 是更好的解决方案,但是如何使用 checkRules 以及 doFilterOnce 如何使用它?

标签: javafiltermicronaut

解决方案


推荐阅读