ITPub博客

首页 > 应用开发 > Java > SOA中springmvc中restful服务动态刷新token信息

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

原创 Java 作者:fumi106 时间:2020-11-10 16:50:17 0 删除 编辑

因为要考虑服务端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.       
  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. }  

(企业架构源码可以加求球:叁五三陆二肆柒二伍玖)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69984376/viewspace-2733342/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-09-22

  • 博文量
    51
  • 访问量
    25934