• 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;
        }
  • 相关阅读:
    可以自己设计和定的报表工具!
    金山词霸取词冲突
    SSRS 2008 Domain User Issue
    第一次用AX2009正式版!
    顶级会议及期刊
    Python基础常识
    Ubuntu系统下查看安装的CUDA和CUDNN的版本
    js内字符串转数组的基本方法
    JavaScript之逻辑分支
    JS入门
  • 原文地址:https://www.cnblogs.com/lvlv/p/11066379.html
Copyright © 2020-2023  润新知