一、该问题的重现步骤是什么?
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版本,商业版
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
我这在调用
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
一直是空的
请把你的这个问题的具体操作步骤录制个视频(比如你是正常通过系统操作的,还是自己写了方法来调用的等等,总之是可以让我们按照你的流程来进行重现调试),发到我们的邮箱:bladejava@qq.com ,看看你是怎么操作的。
扫一扫访问 Blade技术社区 移动端