package cn.mb.cloud.gateway.auth; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import java.net.URLDecoder; import java.util.Map; @Service public class AuthService { private final static Logger log = LoggerFactory.getLogger(AuthService.class); public static final AuthService me = new AuthService(); /** * 鉴权 * @param appid * @param sign * @return */ public ResultUtil checkSyncAuth(String appid, String uri, String sign, Map queryParams) { try { sign = URLDecoder.decode(sign, "UTF-8"); if (StringUtils.isBlank(sign)) { return ResultUtil.sign(); } // 1.鉴权 String signUrl = AuthenticationKit.getSignUrl(uri, queryParams, "sign"); signUrl = signUrl.replaceAll("& #40;", "\\("); signUrl = signUrl.replaceAll("& #41;", "\\)"); String signUrlEncode = AuthenticationKit.signUrlEncode(signUrl, appid); if(sign.indexOf(" ") != -1 && signUrlEncode.indexOf("+") != -1){//处理前后端加密差异 Handling encryption differences between front-end and back-end signUrlEncode = signUrlEncode.replaceAll("\\+", " "); } // 签名无 not sign if (StringUtils.isBlank(sign) || !sign.equals(signUrlEncode)) { return ResultUtil.sign(); } } catch (Exception e) { e.printStackTrace(); return ResultUtil.runErr(); } return ResultUtil.success(); } }