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;
        }
  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/lvlv/p/11066379.html
Copyright © 2011-2022 走看看