|
@@ -1,5 +1,15 @@
|
|
package cn.com.qmth.stmms.api.interceptor;
|
|
package cn.com.qmth.stmms.api.interceptor;
|
|
|
|
|
|
|
|
+import java.util.Date;
|
|
|
|
+
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
|
+
|
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.web.method.HandlerMethod;
|
|
|
|
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
|
|
+
|
|
import cn.com.qmth.stmms.api.exception.ApiException;
|
|
import cn.com.qmth.stmms.api.exception.ApiException;
|
|
import cn.com.qmth.stmms.biz.school.model.School;
|
|
import cn.com.qmth.stmms.biz.school.model.School;
|
|
import cn.com.qmth.stmms.biz.school.service.SchoolService;
|
|
import cn.com.qmth.stmms.biz.school.service.SchoolService;
|
|
@@ -13,16 +23,8 @@ import cn.com.qmth.stmms.common.enums.Role;
|
|
import cn.com.qmth.stmms.common.session.service.SessionService;
|
|
import cn.com.qmth.stmms.common.session.service.SessionService;
|
|
import cn.com.qmth.stmms.common.signature.SignatureInfo;
|
|
import cn.com.qmth.stmms.common.signature.SignatureInfo;
|
|
import cn.com.qmth.stmms.common.signature.SignatureType;
|
|
import cn.com.qmth.stmms.common.signature.SignatureType;
|
|
-import cn.com.qmth.stmms.common.utils.AccessControlUtils;
|
|
|
|
import cn.com.qmth.stmms.common.utils.EncryptUtils;
|
|
import cn.com.qmth.stmms.common.utils.EncryptUtils;
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
import cn.com.qmth.stmms.common.utils.RequestUtils;
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
-import org.springframework.web.method.HandlerMethod;
|
|
|
|
-import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
|
|
|
|
-
|
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* API接口访问拦截器
|
|
* API接口访问拦截器
|
|
@@ -44,8 +46,7 @@ public class ApiInterceptor extends HandlerInterceptorAdapter {
|
|
private SessionService sessionService;
|
|
private SessionService sessionService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
|
|
|
- throws Exception {
|
|
|
|
|
|
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
HandlerMethod method = (HandlerMethod) handler;
|
|
HandlerMethod method = (HandlerMethod) handler;
|
|
try {
|
|
try {
|
|
return validate(request, response, method.getMethodAnnotation(RoleRequire.class));
|
|
return validate(request, response, method.getMethodAnnotation(RoleRequire.class));
|
|
@@ -78,14 +79,14 @@ public class ApiInterceptor extends HandlerInterceptorAdapter {
|
|
return buildApiUser(request, response, school);
|
|
return buildApiUser(request, response, school);
|
|
} else if (info.getType() == SignatureType.TOKEN) {
|
|
} else if (info.getType() == SignatureType.TOKEN) {
|
|
User user = userService.findByLoginName(info.getInvoker());
|
|
User user = userService.findByLoginName(info.getInvoker());
|
|
- if (user == null || user.getAccessTokenRefreshTime() == null || AccessControlUtils
|
|
|
|
- .expired(user.getAccessTokenRefreshTime()) || !info.validate(user.getAccessToken())) {
|
|
|
|
|
|
+ if (user == null || user.getScanTokenInvalidTime() == null
|
|
|
|
+ || new Date().after(user.getScanTokenInvalidTime()) || !info.validate(user.getScanToken())) {
|
|
throw ApiException.SIGNATURE_INVALID;
|
|
throw ApiException.SIGNATURE_INVALID;
|
|
}
|
|
}
|
|
if (!user.isEnable()) {
|
|
if (!user.isEnable()) {
|
|
throw ApiException.USER_DISABLED;
|
|
throw ApiException.USER_DISABLED;
|
|
}
|
|
}
|
|
- if (matchRole(authConfig, user.getRole())) {
|
|
|
|
|
|
+ if (!matchRole(authConfig, user.getRole())) {
|
|
throw ApiException.USER_ROLE_INVALID;
|
|
throw ApiException.USER_ROLE_INVALID;
|
|
}
|
|
}
|
|
return buildApiUser(request, response, user);
|
|
return buildApiUser(request, response, user);
|