1


我写了一些花哨的代码来玩 Swagger API 过滤:

public class ApiAuthorizationFilterImpl implements ApiAuthorizationFilter {
    @Override
    public boolean authorize(String apiPath, String method, HttpHeaders headers, UriInfo uriInfo) {
        System.out.println("authorize");
        return true;
    }

    @Override
    public boolean authorizeResource(String apiPath, HttpHeaders headers, UriInfo uriInfo) {
        System.out.println("authorizeResource");
        return true;
    }
}

然后我web.xml用这些行扩展了我的文件:

<init-param>
    <param-name>swagger.security.filter</param-name>
    <param-value>mypackage.rest.utils.ApiAuthorizationFilterImpl</param-value>
</init-param>

但这似乎不起作用。每当我调用我的 REST 方法时,调试器中既没有停止,ApiAuthorizationFilterImpl也没有打印行。
我错过了什么吗?

4

1 回答 1

3

过滤将应用于文档,而不是方法调用本身。查看是否直接点击 swagger 文档资源(即 http://{your-server}:8080/user.json),您应该会看到 printlns 发出。

为了保护方法本身,您将编写一个单独的过滤器,或者在 swagger 和调用过滤器之间共享逻辑。

于 2012-10-29T14:18:37.670 回答