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

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

  •  
  •   Blueming · Aug 7, 2020 · 2873 views
    This topic created in 2096 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   ·   818 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 19:28 · PVG 03:28 · LAX 12:28 · JFK 15:28
    ♥ Do have faith in what you're doing.