Tomcat显示错误的HTTP状态

时间:2019-02-11 20:49:41

标签: spring http jwt

我需要一些帮助。

我在SPRING Tool Suite上构建了一个API,该API会在发布API上的任何操作之前验证JWT。 那就是我的JWT过滤器:

public void doFilter(ServletRequest request,
                     ServletResponse response,
                     FilterChain filterChain
    ) throws IOException, ServletException {
    try {

        Authentication authentication = TokenAuthenticationService.getAuthentication((HttpServletRequest) request);
        if (authentication == null) {
            System.out.println("auth  null");
            ((HttpServletResponse) response).sendError(BackEndUtilities.INVALID_TOKEN, BackEndUtilities.ERROR_MSG_INVALID_TOKEN);

        }
        SecurityContextHolder.getContext().setAuthentication((Authentication) authentication);
    }catch(ExpiredJwtException ex) {
        ((HttpServletResponse) response).sendError(BackEndUtilities.INVALID_TOKEN);


    }

    filterChain.doFilter(request, response);
}

当我在身份验证中获得空值时,我会发送HTTP状态401告知需要登录。

常数BackEndUtilities.INVALID_TOKEN是int值401。当我在STS服务器上运行API时,会得到此值,但是当我在TOMCAT 8.5上部署war文件时,我会不断获得HTTP状态403。

在两种情况下,我一直在控制台上获取字符串“ auth null”,即仅在身份验证为null时出现。但是,为什么TOMCAT 8.5会“改变”状态?

有人知道为什么它不断发生吗?

1 个答案:

答案 0 :(得分:0)

我明白了。

(((HttpServletResponse)响应).sendError(BackEndUtilities.INVALID_TOKEN,BackEndUtilities.ERROR_MSG_INVALID_TOKEN);

此行停止了sts上的运行处理,但TOMCAT上没有发生。