SOA中springmvc中restful服務動態(tài)刷新token信息

摘要: SOA中springmvc中restful服務動態(tài)刷新token信息

因為要考慮服務端token的動態(tài)刷新,而且還要單獨啟動定時調度任務去刷新token信息,保證token的時效及安全問題,直接分享動態(tài)刷新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信息

*@paramrequest

*?@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);

}

//根據(jù)應用名獲取秘鑰信息

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?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);

}

}

愿意了解框架技術或者源碼的朋友直接求求交流分享技術:3133806896

分布式的一些解決方案,有愿意了解的朋友可以找我們團隊探討

更多詳細源碼參考來源

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容