`
Swifie
  • 浏览: 10681 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

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

 
阅读更多

因为要考虑服务端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. }  
分享到:
评论

相关推荐

    springmvc+hibernate rest 架构

    本项目利用了SpringMVC作为控制器层,Hibernate作为持久层,通过RESTful API提供服务,实现了数据的CRUD操作。下面我们将详细探讨这些知识点。 1. **SpringMVC**:Spring MVC是Spring框架的一个模块,它提供了模型-...

    SpringMVC精品资源--整合JWT,spring,springMVC,实现基于token验证.zip

    【标题】中的“SpringMVC精品资源--整合JWT,spring,springMVC,实现基于token验证”是一个关于使用Spring框架,特别是SpringMVC,与JSON Web Tokens (JWT)集成的教程或项目。这个主题涉及了现代Web应用中常见的...

    SpringMVC+mongodb+freemarker+apiToken开源内容管理系统.zip

    这是一个基于SpringMVC、MongoDB、FreeMarker和API Token构建的开源内容管理系统,适用于Web开发,特别是毕业设计项目。下面将详细介绍这些技术栈及其在系统中的应用。 **SpringMVC**: SpringMVC是Spring框架的一...

    SpringMVC使用JSON的Jackson的jar包

    SpringMVC是一个强大的Java web开发框架,用于处理HTTP请求和响应。在现代Web应用程序中,数据交换经常以JSON(JavaScript Object Notation)...通过理解和正确使用这些组件,可以构建高效、可维护的RESTful Web服务。

    微信硬件蓝牙开发jsapi+SpringMVC+H5+jQuery

    开发过程中,需要理解GATT(Generic Attribute Profile)服务和特性,以及如何通过蓝牙API进行设备扫描、连接、读写操作。 3. **SpringMVC**:这是一个Java Web开发框架,用于后端服务器的开发。SpringMVC处理...

    springMVC需要的包.rar

    在文件名称列表“ssm”中,SSM通常代表Spring、SpringMVC和MyBatis的组合,这是一个常见的Java Web开发栈。MyBatis是一个持久层框架,它简化了数据库操作,将SQL语句与Java代码直接关联起来。 总结来说,这个压缩包...

    JWT(JsonWebToken)+SpringMVC demo

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这个信息可以被验证和信任,因为它是数字签名的。在本示例中,我们将讨论如何将...

    用SpringMVC-MyBatis 搭建高性能安全站点

    在实践中,通过With-SpringMVC-building-secure-site这个项目,你可以学习到如何配置SpringMVC和MyBatis的整合,创建RESTful API,实现登录注册功能,处理HTTP请求,以及如何设置安全策略等。通过这些步骤,你将能够...

    基于SpringBoot 2.0,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,R

    基于SpringBoot 2.0,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,Redis缓存,Shiro权限管理,redis管理Session,Quartz分布式集群调度,Restful服务;系统管理:包括用户管理、权限管理、数据字典、系统...

    微信javaSpringMVC开发

    主要是第三方授权后自动刷新token,然后获取微信预授权码。是maven+SpringmVC+Mybaties+Redies+MongonDB+MySQL开发项目。主要有后天和前台IOS端接口。依赖于Springmvc Restful风格URL。总共有3个Maven web项目,...

    spring security oauth2整合的代码汇总,一共包括5个资料

    文档可能涵盖了授权码(Authorization Code)流、密码(Resource Owner Password Credentials)流、刷新令牌(Refresh Token)等授权类型。 2. **oauth2.0 服务端和客户端代码jar包.rar**: 这个RAR文件包含服务端...

    Spring+SpringMVC+MyBatis+SpringBoot视频05

    Spring Boot 提供了对 Spring Data JPA 和 MyBatis 的支持,可以方便地进行数据查询和分页处理,同时展示如何设计 RESTful API 来提供服务。 3. **183-springboot实战-头条发布和登录保护拦截器.mp4** 视频内容...

    智慧乡村旅游服务平台的设计与实现微信小程序+ssm后端源码案例设计.zip

    6. **安全机制**:在设计中需考虑用户隐私保护和数据安全,例如采用HTTPS协议保证数据传输安全,使用JWT(Json Web Token)进行用户身份验证,以及对敏感信息加密存储等。 7. **用户体验优化**:在小程序界面设计上...

    基于ssm+vue荆州理工职业学院.zip

    4. JWT(JSON Web Token):用于身份验证和信息传输,保证通信过程中的数据完整性。 5. Docker容器化:利用Docker进行应用部署,实现环境的一致性和可移植性。 总的来说,"基于SSM+Vue的荆州理工职业学院信息系统...

    基于Java+vue高校宿舍信息管理系统小程序源码数据库文档.zip

    JWT允许信息在不同服务之间安全传输,而无需在每个请求中携带会话信息。 7. **测试与部署**: 开发完成后,需要进行单元测试、集成测试和性能测试,确保系统的稳定性和效率。部署方面,通常会将Java后端应用部署在...

    基于springboot大学生就业服务平台.zip

    总的来说,"基于SpringBoot的大学生就业服务平台"项目结合了现代Web开发技术与移动互联网的优势,打造了一个集信息查询、求职互动于一体的高效就业服务平台。它的成功实施不仅体现了SpringBoot、SSM和微信小程序的...

    基于ssm+vue的校园事务自助指南服务系统.zip

    在本项目中,SpringBoot可能被用来快速搭建后端服务,提供RESTful API供前端调用。 5. **微信小程序**:如果项目标签中提及的“微信小程序”是实际使用的,那么这个系统可能还包括微信小程序的开发,以便用户可以...

    基于ssm贝立立城市货运服务系统.zip

    在实际运行中,贝立立城市货运服务系统利用GPS定位技术,实时追踪货物位置,为用户提供准确的货物运输信息。同时,系统还具备智能调度算法,根据货物体积、重量、目的地等因素,合理分配运力资源,提高运输效率。 ...

    基于springboot个人健康信息管理微信小程序源码数据库.zip

    虽然标题中提到SSM,但在SpringBoot中,通常使用SpringBoot自身的Web和DataJpa模块,而不再需要单独引入SpringMVC。然而,可能在项目中使用了MyBatis作为ORM(对象关系映射)工具,帮助Java代码与数据库进行交互。 ...

    基于springboot家政服务管理平台.zip

    在当今信息化社会,家政服务行业的管理系统已经成为提升服务质量、优化业务流程的重要工具。本项目“基于SpringBoot的家政服务管理平台”结合了现代Web开发技术和家政服务业务需求,旨在构建一个高效、便捷的管理...

Global site tag (gtag.js) - Google Analytics