SpringSecurity Oauth2 如何动态自定义 jwt 生成的内容 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Blueming
V2EX    Java

SpringSecurity Oauth2 如何动态自定义 jwt 生成的内容

  •  
  •   Blueming 2020-08-07 11:51:23 +08:00 2677 次点击
    这是一个创建于 1960 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前继承了 JwtAccessTokenConverter 类来实现添加额外内容,但是貌似只能硬编码

    public class CustomJwtTokenConverter extends JwtAccessTokenConverter { @Override public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) { Map<String, Object> additiOnal= new HashMap<>(16); additional.put("key", "value"); ((DefaultOAuth2AccessToken) oAuth2AccessToken).setAdditionalInformation(additional); return super.enhance(oAuth2AccessToken, oAuth2Authentication); } } 

    我想实现的就是在生成 jwt token 时将当前请求的用户的 userid 放入 token 中 该如何实现呢?

    6 条回复    2020-08-08 10:38:04 +08:00
    zhenjiachen
        1
    zhenjiachen  
       2020-08-07 13:10:39 +08:00
    继承 DefaultAccessTokenConverter 这个类,然后 set 到 AccessTokenConverter 中就好了
    monkeyk
        2
    monkeyk  
       2020-08-07 14:01:01 +08:00
    看这开源 https://gitee.com/mkk/MyOIDC, 里面有对应的配置与实现
    Blueming
        3
    Blueming  
    OP
       2020-08-07 14:56:32 +08:00
    @zhenjiachen 如何把用户的属性传进去呢
    seliote
        4
    seliote  
       2020-08-07 20:29:43 +08:00
    项目都没了
    viakiba
        5
    viakiba  
       2020-08-08 10:37:00 +08:00
    OAuth2Authentication 这个对象有个 getOAuth2Request() 方法可以获取客户端应用程序的详细信息。你可以看一下这里是怎么存储内容的。比如客户端请求会带一个唯一 id 或者账号啥的,这里可以取到。通过这个唯一 id 就可以取到数据库或者缓存的内容了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3298 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 04:31 PVG 12:31 LAX 20:31 JFK 23:31
    Do have faith in what you're doing.
    ubaomsnsnddmindexpchomeyahoorakutenmypapermeadowduckbidyahooyoubaozxmzxmasdabnvcgcvbfgdfscvmmhjkxxddcyybgbzznbnccubaouaituacvGXCVETGDGYHFGBCVBFJFHCBRECBCGDGET54WRWRRWERWREWWRWERRWERSDGEWSFDSFSFfbbsubaofhddfgewrdgdfewwrewwretruyutututdfgfgdgdfgtetgdfgtdfgdert4gdfggwr235wer3wevsdfsdfgdfertxcvsdfrwerhfddfgcvbrwfafbdfhjghbmnlghrtygfdscxvxcvxcsvdasfdffgdcvsdftertsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfshasha9178shasha9178shasha9178shasha9178shasha9178liflif2liflif2liflif2liflif2liflif2liblib3liblib3liblib3liblib3liblib3zhazha444zhazha444zhazha444zhazha444zhazha444dende5dendedendendenden2denden21fenfen9fenf619fen619fenfe9fe619sdfsdfsdfsdfsdfzhazh90zhazh0zhaa50zha90zh590zhozhozzhozhzhozhozhozho2lislislls95lili95lils5liss9sdf0ty987sdft876sdft9876sdf09876sd0t9876sdf0ty98sdf0976sdf0ty986sdf0ty96sdf0t76sdf0876df0ty98sf0t876sd0ty76sdy76sdf76sdf0t76sdf0ty9sdf0ty98sdf0ty987sdf0ty98sdf6676sdf876sd876sd876sdf6sdf6sdf9876sdf0tsdf06sdf0ty9776sdf0ty9776sdf0ty76sdf8876sdf0tsd6sdf06s688876sd688sdf86
    viakiba
        6
    viakiba  
       2020-08-08 10:38:04 +08:00