标签:end ati details java ali path val uri get
使用时在引导类用@bean注入
在需要用的地方@AutoWired注入
package com.changgou.order.config; import com.alibaba.fastjson.JSON; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.jwt.Jwt; import org.springframework.security.jwt.JwtHelper; import org.springframework.security.jwt.crypto.sign.RsaVerifier; import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; import org.springframework.util.StringUtils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Map; import java.util.stream.Collectors; public class TokenDecode { //公钥 private static final String PUBLIC_KEY = "public.key"; private static String publickey=""; /*** * 获取用户信息 * @return */ public Map<String,String> getUserInfo(){ //获取授权信息 OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails(); //令牌解码 return dcodeToken(details.getTokenValue()); } /*** * 读取令牌数据 */ public Map<String,String> dcodeToken(String token){ //校验Jwt Jwt jwt = JwtHelper.decodeAndVerify(token, new RsaVerifier(getPubKey())); //获取Jwt原始内容 String claims = jwt.getClaims(); return JSON.parseObject(claims,Map.class); } /** * 获取非对称加密公钥 Key * @return 公钥 Key */ public String getPubKey() { if(!StringUtils.isEmpty(publickey)){ return publickey; } Resource resource = new ClassPathResource(PUBLIC_KEY); try { InputStreamReader inputStreamReader = new InputStreamReader(resource.getInputStream()); BufferedReader br = new BufferedReader(inputStreamReader); publickey = br.lines().collect(Collectors.joining("\n")); return publickey; } catch (IOException ioe) { return null; } } }
@bean注入
@SpringBootApplication @EnableEurekaClient @EnableFeignClients(basePackages = "com.changgou.order.feign") public class WebOrderApplication { public static void main(String[] args) { SpringApplication.run(WebOrderApplication.class,args); } //feign拦截器,用于拦截feign,在微服务间转发令牌 @Bean public FeignInterceptor feignInterceptor(){ return new FeignInterceptor(); } }
1
1
标签:end ati details java ali path val uri get
原文地址:https://www.cnblogs.com/wrc-blog/p/14295192.html