|
@@ -1,27 +1,35 @@
|
|
|
package com.uas.eis.core.support;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.servlet.HandlerInterceptor;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
+import com.uas.eis.service.UserService;
|
|
|
import com.uas.eis.utils.BaseUtil;
|
|
|
|
|
|
import io.jsonwebtoken.Claims;
|
|
|
|
|
|
public class InterceptorConfig implements HandlerInterceptor{
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private UserService userService;
|
|
|
+
|
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
|
|
//token认证
|
|
|
String token = request.getParameter("token");
|
|
|
boolean flag = false;
|
|
|
String message = new String("程序错误");
|
|
|
if(token != null && !token.isEmpty()) { // 验证是否包含token
|
|
|
- Claims claims = TokenHandler.checkToken(token);
|
|
|
- if(claims != null && claims.containsKey("userid")) { // 验证token信息是否合法
|
|
|
+ Claims claims = TokenHandler.parseToken(token);
|
|
|
+ if(claims != null && checkToken(claims)) { // 验证token信息是否合法
|
|
|
String username = (String) claims.get("username");
|
|
|
- if(checkRoleEnable(username)) {
|
|
|
+ String password = (String) claims.get("password");
|
|
|
+ if(checkUser(username, password)) { // 验证用户是否合法
|
|
|
String actionUrl = request.getRequestURI();
|
|
|
if(checkActionAccess(username, actionUrl)) { // 验证请求权限
|
|
|
flag = true;
|
|
@@ -32,7 +40,7 @@ public class InterceptorConfig implements HandlerInterceptor{
|
|
|
message = "请求用户无效";
|
|
|
}
|
|
|
}else {
|
|
|
- message = "未通过验证的请求";
|
|
|
+ message = "Token未通过验证或已过期";
|
|
|
}
|
|
|
}else {
|
|
|
message = "未授权的请求";
|
|
@@ -51,11 +59,27 @@ public class InterceptorConfig implements HandlerInterceptor{
|
|
|
Exception ex) throws Exception {
|
|
|
}
|
|
|
|
|
|
- private boolean checkRoleEnable(String username) {
|
|
|
- return true;
|
|
|
+ private boolean checkToken(Claims claims) {
|
|
|
+ Date now = new Date();
|
|
|
+ Date start = claims.getNotBefore();
|
|
|
+ Date end = claims.getExpiration();
|
|
|
+
|
|
|
+ boolean flag = false;
|
|
|
+ if(now.after(start) || now.before(end)) {
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean checkUser(String username, String password) {
|
|
|
+ boolean enable = false;
|
|
|
+ if(username != null && password != null) {
|
|
|
+ enable = userService.checkUser(username, password);
|
|
|
+ }
|
|
|
+ return enable;
|
|
|
}
|
|
|
|
|
|
private boolean checkActionAccess(String username, String action) {
|
|
|
- return username.equals("zhuth") && action.equals("/test");
|
|
|
+ return userService.checkAction(username, action);
|
|
|
}
|
|
|
}
|