zoukankan      html  css  js  c++  java
  • Feign设置assessToken

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.oauth2.client.OAuth2RestTemplate;
    
    import feign.RequestInterceptor;
    import feign.RequestTemplate;
    
    /**
     * 
     *用于解决fegin无法传递授权信息
     * @author 	cicoding
     * @date 	2018年5月30日
     * @Copyright 
     *
     * <pre>
     * =================Modify Record=================
     * Modifier			date				Content
     * cicoding		2019年5月26日			 新增
     *
     * </pre>
     */
    @Configuration
    public class FeignRequestInterceptor implements RequestInterceptor {
        private final Logger logger = LoggerFactory.getLogger(getClass());
    
        private static final String AUTHORIZATION_HEADER = "Authorization";
    
        private static final String BEARER_TOKEN_TYPE = "Bearer";
    
        @Autowired
        private OAuth2RestTemplate oAuth2RestTemplate;
    
        @Override
        public void apply(RequestTemplate requestTemplate) {
            String accessToken = WebContextUtil.getAccessToken();
            if(accessToken == null){
                accessToken =oAuth2RestTemplate.getAccessToken().getValue();
            }
            logger.debug("RequestInterceptorConfig accessToken :" +accessToken);
            requestTemplate.header(AUTHORIZATION_HEADER,
                    String.format("%s %s",
                            BEARER_TOKEN_TYPE,
                            accessToken));
        }
    }
    
    
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.oauth2.client.DefaultOAuth2RequestAuthenticator;
    import org.springframework.security.oauth2.client.OAuth2RestTemplate;
    import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails;
    
    /**
     * 
     *用于解决fegin无法传递授权信息
     * @author 	cicoding
     * @date 	2018年5月30日
     * @Copyright 
     *
     * <pre>
     * =================Modify Record=================
     * Modifier			date				Content
     * cicoding			2019年5月26日		新增
     *
     * </pre>
     */
    @Configuration
    public class OAuth2RestTemplateConfiguration {
        @Bean
        public OAuth2RestTemplate oauth2RestTemplate() {
            ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
            resourceDetails.setClientId("webapp");
            resourceDetails.setClientSecret("webapp");
            resourceDetails.setId("service-user");
            resourceDetails.setAccessTokenUri("http://127.0.0.1:9060/oauth/token");
            OAuth2RestTemplate oAuth2RestTemplate = new OAuth2RestTemplate(resourceDetails);
            oAuth2RestTemplate.setAuthenticator(new DefaultOAuth2RequestAuthenticator());
            return oAuth2RestTemplate;
        }
    }
  • 相关阅读:
    关于动态规划的问题494_LEETCODE_TARGET_SUM
    Python 关于二叉树生成、先序遍历、中序遍历、后序遍历、反转
    关于python引入文件路径的解决办法
    git一些笔记
    迪克斯特拉 算法(算最短距离)
    Python多线程编程中daemon属性的作用
    types.MethodType实例绑定方法
    Python之__getitem__、__getattr__、__setitem__ 、__setitem__ 的区别
    jenkins自动打包ios、安卓
    python socket编程tcp/udp俩连接
  • 原文地址:https://www.cnblogs.com/zhaokejin/p/10927340.html
Copyright © 2011-2022 走看看