zoukankan      html  css  js  c++  java
  • jwt扩展

    1、新建扩展类

    package com.ireciting.uaaservice.config;
    
    import com.ireciting.uaaservice.pojo.TUser;
    import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
    import org.springframework.security.oauth2.common.OAuth2AccessToken;
    import org.springframework.security.oauth2.provider.OAuth2Authentication;
    import org.springframework.security.oauth2.provider.token.TokenEnhancer;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class CustomTokenEnhancer implements TokenEnhancer {
    
        @Override
        public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
            TUser user = (TUser) authentication.getPrincipal();
            final Map<String, Object> additionalInfo = new HashMap<>();
            additionalInfo.put("user_id", user.getUserId());
            ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
    
            return accessToken;
        }
    }

    2、资源服务器获取扩展信息

    新建类转换类

    package com.ireciting.noteservice.config;
    
    import org.springframework.security.oauth2.provider.OAuth2Authentication;
    import org.springframework.security.oauth2.provider.token.DefaultAccessTokenConverter;
    import org.springframework.stereotype.Component;
    
    import java.util.Map;
    /**
     * @author Lv
     * @version 1.0
     * @Description: 定制 AccessToken 转换器,为添加额外信息在服务器端获取做准备
     * @date 2019/6/21 18:51
     */
    @Component
    public class CustomAccessTokenConverter extends DefaultAccessTokenConverter {
    
        @Override
        public OAuth2Authentication extractAuthentication(Map<String, ?> claims) {
            OAuth2Authentication authentication
                    = super.extractAuthentication(claims);
            authentication.setDetails(claims);
            return authentication;
        }
    }

    遍历获取

    /**
         * 获取UserID
         * @return
         */
        public static long getCurrentUserID() {
            try {
                OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails();
                Map<String, Object> map = (Map<String, Object>) details.getDecodedDetails();
                for (String key : map.keySet()) {
                    if (key.equals("user_id"))
                        return (Long) map.get(key);
                }
            }
            catch (Exception e){
                return -1L;
            }
            return -1L;
        }
  • 相关阅读:
    近期总结
    input
    mysql语句
    同步与异步
    localStorage的增删查改封装函数
    最基本的前后台传值
    前段存储的调用函数
    js 控制弹出窗口的大小
    拖拽
    jQuery镇张缩小动画
  • 原文地址:https://www.cnblogs.com/lvlv/p/11066379.html
Copyright © 2011-2022 走看看