|
@@ -1,6 +1,7 @@
|
|
package com.jiayue.ssi.filter;
|
|
package com.jiayue.ssi.filter;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.util.Date;
|
|
|
|
|
|
import javax.servlet.FilterChain;
|
|
import javax.servlet.FilterChain;
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.ServletException;
|
|
@@ -8,7 +9,9 @@ import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
|
import com.jiayue.ssi.constant.CacheConstants;
|
|
import com.jiayue.ssi.constant.CacheConstants;
|
|
|
|
+import com.jiayue.ssi.entity.SysUser;
|
|
import com.jiayue.ssi.service.impl.UserServiceImpl;
|
|
import com.jiayue.ssi.service.impl.UserServiceImpl;
|
|
|
|
+import com.jiayue.ssi.util.DateUtils;
|
|
import com.jiayue.ssi.util.ResponseInfo;
|
|
import com.jiayue.ssi.util.ResponseInfo;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.core.annotation.Order;
|
|
import org.springframework.core.annotation.Order;
|
|
@@ -28,6 +31,7 @@ import com.jiayue.ssi.util.JwtTokenUtil;
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
@Order(10)
|
|
@Order(10)
|
|
public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
|
|
public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
|
|
|
|
+ private String defaultFilterProcessUrl = "/user/login";
|
|
|
|
|
|
UserServiceImpl userServiceImpl;
|
|
UserServiceImpl userServiceImpl;
|
|
JwtTokenUtil jwtTokenUtil;
|
|
JwtTokenUtil jwtTokenUtil;
|
|
@@ -61,6 +65,15 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
|
|
|
|
|
|
if (username != null && SecurityContextHolder.getContext().getAuthentication() == null){
|
|
if (username != null && SecurityContextHolder.getContext().getAuthentication() == null){
|
|
UserDetails userDetails = userServiceImpl.loadUserByUsername(username);
|
|
UserDetails userDetails = userServiceImpl.loadUserByUsername(username);
|
|
|
|
+ SysUser user = (SysUser) userDetails;
|
|
|
|
+ if (user.getExpDate()!=null){
|
|
|
|
+ // 判断账号截止日期
|
|
|
|
+ Date lastDate = DateUtils.getDayLastTime(user.getExpDate());
|
|
|
|
+ if (new Date().after(lastDate)){
|
|
|
|
+ ResponseInfo.doResponse(response, "账号有效期已失效,请联系管理员!", 403);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
if (jwtTokenUtil.validateToken(token, userDetails)){
|
|
if (jwtTokenUtil.validateToken(token, userDetails)){
|
|
// 将用户信息存入 authentication,方便后续校验
|
|
// 将用户信息存入 authentication,方便后续校验
|
|
UsernamePasswordAuthenticationToken
|
|
UsernamePasswordAuthenticationToken
|
|
@@ -71,8 +84,21 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ else{
|
|
|
|
+ if ("POST".equalsIgnoreCase(request.getMethod()) && defaultFilterProcessUrl.equals(request.getServletPath())) {
|
|
|
|
+ // 用户名密码登录提交,判断账号有效期
|
|
|
|
+ UserDetails userDetails = userServiceImpl.loadUserByUsername(request.getParameter("username"));
|
|
|
|
+ SysUser user = (SysUser) userDetails;
|
|
|
|
+ if (user.getExpDate()!=null){
|
|
|
|
+ // 判断账号截止日期
|
|
|
|
+ Date lastDate = DateUtils.getDayLastTime(user.getExpDate());
|
|
|
|
+ if (new Date().after(lastDate)){
|
|
|
|
+ ResponseInfo.doResponse(response, "账号有效期已失效,请联系管理员!", 403);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
chain.doFilter(request, response);
|
|
chain.doFilter(request, response);
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|