我正在使用Spring Security来保护REST API。 我使用自定义过滤器来检查请求是否在标头中包含有效的JWT令牌。如果请求包含有效令牌,则会将一个身份验证对象添加到安全上下文中,否则我会将null添加到安全上下文中。
我还定义了一个AuthenticationEntryPoint,当出现身份验证异常时,它只返回401。
在我的安全xml中,我定义了一系列拦截网址。其中一些访问设置为“isAuthenticated()”,一些访问设置为“permitAll”。
当我向访问权限设置为“isAuthenticated()”的URL发出请求时,标题中包含有效的JWT令牌,这样可以正常工作。但是,当我向没有令牌的请求发出访问权限设置为'permitAll'的URL时,会抛出异常并返回401。
我想要实现的是仅当未经身份验证的请求尝试访问访问权限设置为“isAuthenticated()”的URL时才会生成401响应。当请求访问权限设置为'permitAll'的URL时,我不希望返回401,无论请求是否经过身份验证。