SOA中springmvc中restful服务动态刷新token信息

因为要考虑服务端token的动态刷新,而且还要单独启动定时调度任务去刷新token信息,保证token的时效及安全问题,直接分享动态刷新token的代码:

Java代码 复制代码 收藏代码07161849_ENf1.gif

  1. @CrossOrigin(origins = "*", maxAge = 3600,methods={RequestMethod.GET,RequestMethod.POST,RequestMethod.DELETE,RequestMethod.PUT})  
  2. @RestController  
  3. @RequestMapping(value = "/rest/soa")  
  4. public class SoaServiceResource {  
  5.       
  6.     private static final Logger logger = Logger.getLogger(SoaServiceResource.class);  
  7.     @Autowired  
  8.     private SoaAppSecretService soaAppSecretService;  
  9.       
  10.     /** 
  11.      * 刷新应用token信息 
  12.      * @param request 
  13.      * @param response 
  14.      * @return 
  15.      */  
  16.     @RequestMapping(value = "/refAppSecret", method = RequestMethod.GET)  
  17.     public ResponseVO refAppSecret(@RequestParam(required=false) String appname, HttpServletRequest request, HttpServletResponse response){  
  18.         try {  
  19.             if(StringUtils.isEmpty(appname)){  
  20.                 return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_NULL, null);  
  21.             }  
  22.             //根据应用名获取秘钥信息  
  23.             SoaAppSecret appSecret = soaAppSecretService.findAppSecretByAppName(appname);  
  24.             if(null == appSecret){  
  25.                 return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_EXIST, null);  
  26.             }  
  27.             String appsecret = appSecret.getAppsecret();  
  28.             if(StringUtils.isNotEmpty(appsecret)){  
  29.                 long afterTime = DateUtils.getAfterTime(new Date());  
  30.                 String token = EncryptUtil2.encryptToAES(EncryptUtil2.AESKey,  appname + EncryptUtil2.CONNECTOR + appsecret + EncryptUtil2.CONNECTOR + afterTime);  
  31.                 SoaAppSecret soaAppSecret = new SoaAppSecret();  
  32.                 soaAppSecret.setToken(token);  
  33.                 soaAppSecret.setAppname(appname);  
  34.                 soaAppSecret.setUpdateDate(new Date());  
  35.                 soaAppSecretService.refAppSecret(soaAppSecret);  
  36.                 JSONObject data = new JSONObject();  
  37.                 data.put("token", token);  
  38.                 return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  
  39.             }  
  40.             return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPSECRET_NOT_EXIST, null);  
  41.         } catch (Exception e) {  
  42.             logger.error("SoaServiceResource >> refAppSecret >> Exception " + e.getMessage());  
  43.             return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.SYSTEM_ERROR, null);  
  44.         }  
  45.     }  
  46.       
  47.     /** 
  48.      * 批量刷新应用秘钥信息 
  49.      * @param request 
  50.      * @param response 
  51.      * @return 
  52.      */  
  53.     @RequestMapping(value = "/batchRefAppSecret", method = RequestMethod.GET)  
  54.     public ResponseVO batchRefAppSecret(HttpServletRequest request, HttpServletResponse response){  
  55.         List<SoaAppSecret> appSecretList = soaAppSecretService.findList(new SoaAppSecret());  
  56.         if(null != appSecretList && appSecretList.size() > 0){  
  57.             for(SoaAppSecret soaAppSecret : appSecretList){  
  58.                 try {  
  59.                     String appsecret = soaAppSecret.getAppsecret();  
  60.                     if(StringUtils.isNotEmpty(appsecret)){  
  61.                         long afterTime = DateUtils.getAfterTime(new Date());  
  62.                         String token = EncryptUtil2.encryptToAES(EncryptUtil2.AESKey,  soaAppSecret.getAppname() + EncryptUtil2.CONNECTOR + appsecret + EncryptUtil2.CONNECTOR + afterTime);  
  63.                         soaAppSecret.setToken(token);  
  64.                         soaAppSecret.setUpdateDate(new Date());  
  65.                         soaAppSecretService.refAppSecret(soaAppSecret);  
  66.                         JSONObject data = new JSONObject();  
  67.                         data.put("token", token);  
  68.                         return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  
  69.                     }  
  70.                       
  71.                     logger.info("SoaServiceResource >> batchRefAppSecret >> 刷新应用秘钥信息成功,应用名: " + soaAppSecret.getAppname() + ",新的token信息: " + soaAppSecret.getToken() );  
  72.                     return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPSECRET_NOT_EXIST, null);  
  73.                 } catch (Exception e) {  
  74.                     logger.error("SoaServiceResource >> batchRefAppSecret >> Exception " + e.getMessage());  
  75.                 }  
  76.             }  
  77.         }  
  78.         return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, true);  
  79.     }  
  80.       
  81.     /** 
  82.      * 获取应用token 
  83.      * @param request 
  84.      * @param response 
  85.      * @return 
  86.      */  
  87.     @RequestMapping(value = "/findAppSecret", method = RequestMethod.GET)  
  88.     public ResponseVO findAppSecret(@RequestParam(required=false) String appname, HttpServletRequest request, HttpServletResponse response){  
  89.         if(StringUtils.isEmpty(appname)){  
  90.             return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_NULL, null);  
  91.         }  
  92.         SoaAppSecret appSecret = soaAppSecretService.findAppSecretByAppName(appname);  
  93.         if(null == appSecret){  
  94.             return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_EXIST, null);  
  95.         }  
  96.         JSONObject data = new JSONObject();  
  97.         data.put("token", appSecret.getToken());  
  98.         return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  
  99.     }  
  100.       
  101. }  

    愿意了解框架技术或者源码的朋友直接求求交流分享技术:3133806896

    分布式的一些解决方案,有愿意了解的朋友可以找我们团队探讨

    更多详细源码参考来源

转载于:https://my.oschina.net/u/3723158/blog/1563857

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值