用户token业务逻辑问题

Blade 未结 2 171
ydydydydyd
ydydydydyd 2026-08-15 17:21

一、该问题的重现步骤是什么?

1. 

AbstractTokenGranter 里面的public OAuth2User user方法,

OAuth2User user = (StringUtil.isNotBlank(request.getUserId()) && request.isRefreshToken())

? userService.loadByUserId(request.getUserId(), request)

当条件满足2,直接走userService.loadByUserId的时候

, userService.loadByUsername(request.getUsername(), request); 这里直接走的loadByUsername,可是loadByUsername方法查询的时候没有查询用户的角色和权限,导致下面的userService.validateUser 校验过不去


二、你期待的结果是什么?实际看到的又是什么?

这里该怎么处理呢?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

4.8版本,商业版


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  •  ydydydydyd
    ydydydydyd (楼主)
    2026-08-17 09:17

    我这在调用

    TokenGranter tokenGranter = .create(OAuth2GranterConstant.);
    OAuth2User user = tokenGranter.user(request);
    OAuth2Token token = tokenGranter.token(user, request);

    的时候,request参数里面没有refreshToken,在

    OAuth2User user = (StringUtil.(request.getUserId()) && request.isRefreshToken())
        ? .loadByUserId(request.getUserId(), request)
        : .loadByUsername(request.getUsername(), request);
        // 用户不存在
    if (user == null) {
        OAuth2ExceptionUtil.throwFromCode(OAuth2ErrorCode.INVALID_USER);
    }
    
    // 校验用户信息
    if (!userService.validateUser(Objects.requireNonNull(user))) {
        OAuth2ExceptionUtil.throwFromCode(OAuth2ErrorCode.INVALID_USER);
    }

    这里进入loadByUsername,在

    userService.validateUser

    这一步就进行不下去了,user里的

    Authorities

    一直是空的

    作者追问:2026-08-17 09:17

    请把你的这个问题的具体操作步骤录制个视频(比如你是正常通过系统操作的,还是自己写了方法来调用的等等,总之是可以让我们按照你的流程来进行重现调试),发到我们的邮箱:bladejava@qq.com ,看看你是怎么操作的。



提交回复