springmvc中restful服務動態刷新token信息

由於要考慮服務端token的動態刷新,並且還要單獨啓動定時調度任務去刷新token信息,保證token的時效及安全問題,直接分享動態刷新token的代碼:(企業架構源碼能夠加求球:三五三六二四七二五九)安全

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