You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Auth入口点未覆盖抽象commence方法问题求助

JWT认证中AuthenticationEntryPoint实现类报错的解决思路

根据你提供的代码和报错情况,核心问题大概率是Servlet API包版本不匹配,结合Spring版本差异给出以下解决步骤:

1. 排查Spring版本对应关系

如果你的项目使用Spring Boot 3.x及以上,对应的Spring Security 6.x已经切换到Jakarta Servlet API(包路径为jakarta.servlet),不再支持旧版的javax.servlet包。你的代码中导入的是javax.servlet下的类,这会导致实现的commence方法签名与AuthenticationEntryPoint接口要求的不匹配,编译器判定你未正确实现抽象方法。

2. 修正导入包

将代码中的javax.servlet相关导入替换为jakarta.servlet:

package letterbookd.server.security;

import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

@Component
public class JwtAuthEntryPoint implements AuthenticationEntryPoint {
    @Override
    public void commence(
            HttpServletRequest request, 
            HttpServletResponse response, 
            AuthenticationException authException) throws IOException, ServletException {
        response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage());
    }
}

3. 额外排查点

  • 检查依赖树:通过mvn dependency:tree(Maven)或gradle dependencies(Gradle)确认是否存在javax.servlet的依赖,若有则排除,避免类加载冲突。
  • 确认接口导入:确保AuthenticationEntryPoint的导入是org.springframework.security.web.AuthenticationEntryPoint,不要误导入其他同名类。

内容的提问来源于stack exchange,提问作者lhoogenraad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 15:00:07