分享

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

 新用户32269360 2020-11-03

因为要考虑服务端token的动态刷新,而且还要单独启动定时调度任务去刷新token信息,保证token的时效及安全问题,直接分享动态刷新token的代码:(企业架构源码可以加求球:叁五三陆二肆柒二伍玖)

Java代码  收藏代码

  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.     private static final Logger logger = Logger.getLogger(SoaServiceResource.class);  

  6.     @Autowired  

  7.     private SoaAppSecretService soaAppSecretService;  

  8.     /** 

  9.      * 刷新应用token信息 

  10.      * @param request 

  11.      * @param response 

  12.      * @return 

  13.      */  

  14.     @RequestMapping(value = "/refAppSecret", method = RequestMethod.GET)  

  15.     public ResponseVO refAppSecret(@RequestParam(required=false) String appname, HttpServletRequest request, HttpServletResponse response){  

  16.         try {  

  17.             if(StringUtils.isEmpty(appname)){  

  18.                 return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_NULL, null);  

  19.             }  

  20.             //根据应用名获取秘钥信息  

  21.             SoaAppSecret appSecret = soaAppSecretService.findAppSecretByAppName(appname);  

  22.             if(null == appSecret){  

  23.                 return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_EXIST, null);  

  24.             }  

  25.             String appsecret = appSecret.getAppsecret();  

  26.             if(StringUtils.isNotEmpty(appsecret)){  

  27.                 long afterTime = DateUtils.getAfterTime(new Date());  

  28.                 String token = EncryptUtil2.encryptToAES(EncryptUtil2.AESKey,  appname + EncryptUtil2.CONNECTOR + appsecret + EncryptUtil2.CONNECTOR + afterTime);  

  29.                 SoaAppSecret soaAppSecret = new SoaAppSecret();  

  30.                 soaAppSecret.setToken(token);  

  31.                 soaAppSecret.setAppname(appname);  

  32.                 soaAppSecret.setUpdateDate(new Date());  

  33.                 soaAppSecretService.refAppSecret(soaAppSecret);  

  34.                 JSONObject data = new JSONObject();  

  35.                 data.put("token", token);  

  36.                 return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  

  37.             }  

  38.             return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPSECRET_NOT_EXIST, null);  

  39.         } catch (Exception e) {  

  40.             logger.error("SoaServiceResource >> refAppSecret >> Exception " + e.getMessage());  

  41.             return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.SYSTEM_ERROR, null);  

  42.         }  

  43.     }  

  44.     /** 

  45.      * 批量刷新应用秘钥信息 

  46.      * @param request 

  47.      * @param response 

  48.      * @return 

  49.      */  

  50.     @RequestMapping(value = "/batchRefAppSecret", method = RequestMethod.GET)  

  51.     public ResponseVO batchRefAppSecret(HttpServletRequest request, HttpServletResponse response){  

  52.         List<SoaAppSecret> appSecretList = soaAppSecretService.findList(new SoaAppSecret());  

  53.         if(null != appSecretList && appSecretList.size() > 0){  

  54.             for(SoaAppSecret soaAppSecret : appSecretList){  

  55.                 try {  

  56.                     String appsecret = soaAppSecret.getAppsecret();  

  57.                     if(StringUtils.isNotEmpty(appsecret)){  

  58.                         long afterTime = DateUtils.getAfterTime(new Date());  

  59.                         String token = EncryptUtil2.encryptToAES(EncryptUtil2.AESKey,  soaAppSecret.getAppname() + EncryptUtil2.CONNECTOR + appsecret + EncryptUtil2.CONNECTOR + afterTime);  

  60.                         soaAppSecret.setToken(token);  

  61.                         soaAppSecret.setUpdateDate(new Date());  

  62.                         soaAppSecretService.refAppSecret(soaAppSecret);  

  63.                         JSONObject data = new JSONObject();  

  64.                         data.put("token", token);  

  65.                         return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  

  66.                     }  

  67.                     logger.info("SoaServiceResource >> batchRefAppSecret >> 刷新应用秘钥信息成功,应用名: " + soaAppSecret.getAppname() + ",新的token信息: " + soaAppSecret.getToken() );  

  68.                     return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPSECRET_NOT_EXIST, null);  

  69.                 } catch (Exception e) {  

  70.                     logger.error("SoaServiceResource >> batchRefAppSecret >> Exception " + e.getMessage());  

  71.                 }  

  72.             }  

  73.         }  

  74.         return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, true);  

  75.     }  

  76.     /** 

  77.      * 获取应用token 

  78.      * @param request 

  79.      * @param response 

  80.      * @return 

  81.      */  

  82.     @RequestMapping(value = "/findAppSecret", method = RequestMethod.GET)  

  83.     public ResponseVO findAppSecret(@RequestParam(required=false) String appname, HttpServletRequest request, HttpServletResponse response){  

  84.         if(StringUtils.isEmpty(appname)){  

  85.             return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_NULL, null);  

  86.         }  

  87.         SoaAppSecret appSecret = soaAppSecretService.findAppSecretByAppName(appname);  

  88.         if(null == appSecret){  

  89.             return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_EXIST, null);  

  90.         }  

  91.         JSONObject data = new JSONObject();  

  92.         data.put("token", appSecret.getToken());  

  93.         return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  

  94.     }  

  95. }  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多