token信息只存至Redis,AuthUtil.getUser()只有account有值,其它为空

Blade 已结 2 418
小光头
小光头 剑童 2023-03-16 17:52

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

  1. 短信验证成功后,我将保存到user表的信息通过以下语句得到token信息:

    TokenInfo tokenInfo = SecureUtil.createJWT(user, "", "", "access_token")

   2. 得到tokenInfo后,我用以下语句,将其加到redis缓存:

    JwtUtil.addAccessToken(tenantId,  userId, tokenInfo.getToken(), 36000);

   3.写的短信登录算是登录成功,但问题来了,我通过以下语句获取当前登录用户信息是,只有account是有值的,其他信息都为空:

    BladeUser buInfo = AuthUtil.getUser();


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

    期待结果,通过以下语句得到的buInfo是完整的。

        BladeUser buInfo = AuthUtil.getUser();

    但实际看到的却如图:

    image.png


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

    使用的产品是:BladeX-3.0.1.RELEASE

    操作系统是win10


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


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

2条回答
  •  zhx1994
    zhx1994 (最佳回答者)
    2023-03-17 09:19

    TokenInfo tokenInfo = SecureUtil.createJWT(user, "", "", "access_token")这里的user你断点看下是不是传进去就没有值.

    0 讨论(1)
  • 2023-03-17 18:50

    问题已解决,分两步:

    1、获取token时,传递的用户信息,数据格式为map,其key值必须非驼峰:

    image.png


    2、需要将bladeUser信息保存至HttpServletRequest,此时bladeUser信息字段就是驼峰了:

    HttpServletRequest request = WebUtil.getRequest();
    // 保存
    request.setAttribute("_BLADE_USER_REQUEST_ATTR_", bladeUser);


    2 讨论(0)
提交回复