|
|
@@ -11,6 +11,7 @@ import com.uas.sso.exception.VisibleError;
|
|
|
import com.uas.sso.service.SettingService;
|
|
|
import com.uas.sso.service.TokenService;
|
|
|
import com.uas.sso.util.StringUtil;
|
|
|
+import com.uas.sso.util.encry.HmacUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.HttpStatus;
|
|
|
@@ -51,6 +52,12 @@ public class BaseController {
|
|
|
@Autowired
|
|
|
protected SettingService settingService;
|
|
|
|
|
|
+ private final static String SIGNATURE_PARAM = "_signature";
|
|
|
+
|
|
|
+ private final static String TIMESTAMP_PARAM = "_timestamp";
|
|
|
+
|
|
|
+ private final static long EXPIRE_IN = 10 * 1000;
|
|
|
+
|
|
|
protected static boolean isSuccess(ModelMap map) {
|
|
|
return Boolean.TRUE.equals(map.get("success"));
|
|
|
}
|
|
|
@@ -300,4 +307,26 @@ public class BaseController {
|
|
|
throw new VisibleError("未找到所选地区");
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public void checkRequest(String accessSecret) {
|
|
|
+ // 获取参数
|
|
|
+ String signature = request.getParameter(SIGNATURE_PARAM);
|
|
|
+ Long timestamp = Long.valueOf(request.getParameter(TIMESTAMP_PARAM));
|
|
|
+
|
|
|
+ if (StringUtils.isEmpty(accessSecret)) {
|
|
|
+ throw new VisibleError("接口未授权");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 请求时间不小于当前时间10秒,单位毫秒
|
|
|
+ if (System.currentTimeMillis() - timestamp > EXPIRE_IN || System.currentTimeMillis() < timestamp) {
|
|
|
+ throw new VisibleError("请求超时");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断加密信息是否有误
|
|
|
+ String urlMessage = request.getRequestURL() + "?"
|
|
|
+ + request.getQueryString().substring(0, request.getQueryString().indexOf("_signature") - 1);
|
|
|
+ if (!signature.equals(HmacUtils.encode(urlMessage, accessSecret))) {
|
|
|
+ throw new VisibleError("密钥错误");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|