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

Spring Boot v2.4.5集成JWT调用认证接口抛出DisabledException用户禁用异常

异常产生原因

Spring Security 认证流程中会默认校验UserDetails接口定义的账号状态方法返回值,其中isEnabled()方法用于判断账号是否处于启用状态,若返回false就会直接抛出DisabledException: User is disabled异常。
你编写的User实体类实现了UserDetails接口,但没有显式重写isEnabled()方法:

  • 如果你是通过Lombok的@Data注解自动生成该方法,实体类中没有对应enabled字段时,默认生成的方法返回值为false,直接触发异常
  • 即使业务不需要账号禁用功能,也必须显式实现该方法返回合法值,否则会导致认证流程校验失败。

解决方案

根据你的业务需求选择对应实现方式即可:

  1. 不需要账号启用/禁用控制的场景,直接固定返回true
    在User类中添加如下重写方法:
@Override
public boolean isEnabled() {
    return true;
}
  1. 需要支持账号禁用功能的场景,先补充映射字段再实现方法
// 新增和数据库表对应的enabled字段,存储账号启用状态
@Column(name = "enabled")
private boolean enabled;

@Override
public boolean isEnabled() {
    return this.enabled;
}

额外提示:你当前getAuthorities()方法返回了null,后续做权限校验时会触发空指针异常,建议修改为返回空集合:return Collections.emptyList();


内容的提问来源于stack exchange,提问作者Nunyet Calçada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:18:04