如何在不重写方法的情况下检查休息控制器中每个休息 API 中的授权令牌

How to check for Authorization Token in every Rest API in a rest controller without rewriting a method

我正在 Spring Boot (Maven) 中构建一个 Rest Controller,我希望我的 API 有一个 Authorization Bearer 令牌,我可以在其中发送如果令牌无效,则 401 响应但我不想手动检查我创建的每个 API,有没有一种方法可以 运行 一个方法来检查令牌之前是否有效实际上 运行宁 API.

如果令牌无效,我想发送一个 401,而不是 API 收到的消息。

您可以创建一个自定义过滤器(实现 javax.servlet.Filter),它会拦截每个传入的请求,您可以在其中使用逻辑检查请求是否具有授权 header。

@Component
public class AuthFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        if (req.getHeader("Authorization") != null){ //or replace with a further fine grained condition
            chain.doFilter(request, response);
        } else {
            HttpServletResponse res = (HttpServletResponse) response;
            res.setStatus(401);
        }
    }
}