ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-06-24 17:06:31  阅读:213  来源: 互联网

标签:SOA return springmvc soaAppSecret token SoaServiceEnum SoaResponseCode buildEnum


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

Java代码

@CrossOrigin(origins = "*", maxAge = 3600,methods={RequestMethod.GET,RequestMethod.POST,RequestMethod.DELETE,RequestMethod.PUT})  
@RestController  
@RequestMapping(value = "/rest/soa")  
public class SoaServiceResource {  
      
    private static final Logger logger = Logger.getLogger(SoaServiceResource.class);  
    @Autowired  
    private SoaAppSecretService soaAppSecretService;  
      
    /** 
     * 刷新应用token信息 
     * @param request 
     * @param response 
     * @return 
     */  
    @RequestMapping(value = "/refAppSecret", method = RequestMethod.GET)  
    public ResponseVO refAppSecret(@RequestParam(required=false) String appname, HttpServletRequest request, HttpServletResponse response){  
        try {  
            if(StringUtils.isEmpty(appname)){  
                return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_NULL, null);  
            }  
            //根据应用名获取秘钥信息  
            SoaAppSecret appSecret = soaAppSecretService.findAppSecretByAppName(appname);  
            if(null == appSecret){  
                return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_EXIST, null);  
            }  
            String appsecret = appSecret.getAppsecret();  
            if(StringUtils.isNotEmpty(appsecret)){  
                long afterTime = DateUtils.getAfterTime(new Date());  
                String token = EncryptUtil2.encryptToAES(EncryptUtil2.AESKey,  appname + EncryptUtil2.CONNECTOR + appsecret + EncryptUtil2.CONNECTOR + afterTime);  
                SoaAppSecret soaAppSecret = new SoaAppSecret();  
                soaAppSecret.setToken(token);  
                soaAppSecret.setAppname(appname);  
                soaAppSecret.setUpdateDate(new Date());  
                soaAppSecretService.refAppSecret(soaAppSecret);  
                JSONObject data = new JSONObject();  
                data.put("token", token);  
                return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  
            }  
            return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPSECRET_NOT_EXIST, null);  
        } catch (Exception e) {  
            logger.error("SoaServiceResource >> refAppSecret >> Exception " + e.getMessage());  
            return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.SYSTEM_ERROR, null);  
        }  
    }  
      
    /** 
     * 批量刷新应用秘钥信息 
     * @param request 
     * @param response 
     * @return 
     */  
    @RequestMapping(value = "/batchRefAppSecret", method = RequestMethod.GET)  
    public ResponseVO batchRefAppSecret(HttpServletRequest request, HttpServletResponse response){  
        List<SoaAppSecret> appSecretList = soaAppSecretService.findList(new SoaAppSecret());  
        if(null != appSecretList && appSecretList.size() > 0){  
            for(SoaAppSecret soaAppSecret : appSecretList){  
                try {  
                    String appsecret = soaAppSecret.getAppsecret();  
                    if(StringUtils.isNotEmpty(appsecret)){  
                        long afterTime = DateUtils.getAfterTime(new Date());  
                        String token = EncryptUtil2.encryptToAES(EncryptUtil2.AESKey,  soaAppSecret.getAppname() + EncryptUtil2.CONNECTOR + appsecret + EncryptUtil2.CONNECTOR + afterTime);  
                        soaAppSecret.setToken(token);  
                        soaAppSecret.setUpdateDate(new Date());  
                        soaAppSecretService.refAppSecret(soaAppSecret);  
                        JSONObject data = new JSONObject();  
                        data.put("token", token);  
                        return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  
                    }  
                      
                    logger.info("SoaServiceResource >> batchRefAppSecret >> 刷新应用秘钥信息成功,应用名: " + soaAppSecret.getAppname() + ",新的token信息: " + soaAppSecret.getToken() );  
                    return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPSECRET_NOT_EXIST, null);  
                } catch (Exception e) {  
                    logger.error("SoaServiceResource >> batchRefAppSecret >> Exception " + e.getMessage());  
                }  
            }  
        }  
        return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, true);  
    }  
      
    /** 
     * 获取应用token 
     * @param request 
     * @param response 
     * @return 
     */  
    @RequestMapping(value = "/findAppSecret", method = RequestMethod.GET)  
    public ResponseVO findAppSecret(@RequestParam(required=false) String appname, HttpServletRequest request, HttpServletResponse response){  
        if(StringUtils.isEmpty(appname)){  
            return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_NULL, null);  
        }  
        SoaAppSecret appSecret = soaAppSecretService.findAppSecretByAppName(appname);  
        if(null == appSecret){  
            return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.APPNAME_NOT_EXIST, null);  
        }  
        JSONObject data = new JSONObject();  
        data.put("token", appSecret.getToken());  
        return SoaResponseCode.buildEnumResponseVO(SoaServiceEnum.REQUEST_SUCCESS, data);  
    }  
      
}  

标签:SOA,return,springmvc,soaAppSecret,token,SoaServiceEnum,SoaResponseCode,buildEnum
来源: https://blog.csdn.net/iteye_3750/article/details/106916804

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有