V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Blueming
V2EX  ›  Java

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

  •  
  •   Blueming · Aug 7, 2020 · 2874 views
    This topic created in 2097 days ago, the information mentioned may be changed or developed.

    目前继承了 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 replies    2020-08-08 10:38:04 +08:00
    zhenjiachen
        1
    zhenjiachen  
       Aug 7, 2020
    继承 DefaultAccessTokenConverter 这个类,然后 set 到 AccessTokenConverter 中就好了
    monkeyk
        2
    monkeyk  
       Aug 7, 2020
    看这开源 https://gitee.com/mkk/MyOIDC, 里面有对应的配置与实现
    Blueming
        3
    Blueming  
    OP
       Aug 7, 2020
    @zhenjiachen 如何把用户的属性传进去呢
    seliote
        4
    seliote  
       Aug 7, 2020
    项目都没了
    viakiba
        5
    viakiba  
       Aug 8, 2020
    OAuth2Authentication 这个对象有个 getOAuth2Request() 方法可以获取客户端应用程序的详细信息。你可以看一下这里是怎么存储内容的。比如客户端请求会带一个唯一 id 或者账号啥的,这里可以取到。通过这个唯一 id 就可以取到数据库或者缓存的内容了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2535 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 10:53 · PVG 18:53 · LAX 03:53 · JFK 06:53
    ♥ Do have faith in what you're doing.