用户访问情况记录
This commit is contained in:
@@ -19,11 +19,9 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|||||||
public class InterceptorConfig implements WebMvcConfigurer {
|
public class InterceptorConfig implements WebMvcConfigurer {
|
||||||
@Override
|
@Override
|
||||||
public void addInterceptors(InterceptorRegistry registry) {
|
public void addInterceptors(InterceptorRegistry registry) {
|
||||||
registry.addInterceptor(new MultipleSubmitFilter()).addPathPatterns("/*");
|
registry.addInterceptor(new MultipleSubmitFilter()).addPathPatterns("/**");
|
||||||
|
registry.addInterceptor(new VisitorRecord()).addPathPatterns("/**");
|
||||||
registry.addInterceptor(authenticationFilter()).addPathPatterns("/**");
|
registry.addInterceptor(authenticationFilter()).addPathPatterns("/**");
|
||||||
|
|
||||||
// visitor 输出信息杂乱 暂时放弃使用
|
|
||||||
// registry.addInterceptor(new VisitorRecord()).addPathPatterns("/*");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@@ -31,11 +29,11 @@ public class InterceptorConfig implements WebMvcConfigurer {
|
|||||||
return new AuthenticationFilter();
|
return new AuthenticationFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
// // session listener register bean
|
@Bean
|
||||||
// @Bean
|
public ServletListenerRegistrationBean<SessionListener> servletListenerRegistrationBean() {
|
||||||
// public ServletListenerRegistrationBean<SessionListener> servletListenerRegistrationBean() {
|
// session listener register bean
|
||||||
// ServletListenerRegistrationBean<SessionListener> slrBean = new ServletListenerRegistrationBean<SessionListener>();
|
ServletListenerRegistrationBean<SessionListener> slrBean = new ServletListenerRegistrationBean<SessionListener>();
|
||||||
// slrBean.setListener(new SessionListener());
|
slrBean.setListener(new SessionListener());
|
||||||
// return slrBean;
|
return slrBean;
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,12 +41,16 @@ public class AuthenticationFilter implements HandlerInterceptor {
|
|||||||
path = path.replaceAll("/+", "/");
|
path = path.replaceAll("/+", "/");
|
||||||
int indexOf = path.indexOf("/", 1);
|
int indexOf = path.indexOf("/", 1);
|
||||||
String rootPath = indexOf == -1 ? path : path.substring(0, indexOf);
|
String rootPath = indexOf == -1 ? path : path.substring(0, indexOf);
|
||||||
|
String jwtStr = request.getHeader("Authorization");
|
||||||
|
if (jwtStr != null && !jwtStr.isEmpty() && !jwtUtil.isTokenExpired(jwtStr)) {
|
||||||
|
// 已登录 记录当前email
|
||||||
|
request.getSession().setAttribute("email", jwtUtil.getUsernameFromToken(jwtStr));
|
||||||
|
}
|
||||||
// 不需要鉴权的路径
|
// 不需要鉴权的路径
|
||||||
if (!USER_PREFIX.equals(rootPath.toLowerCase()) && !ADMIN_PREFIX.equals(rootPath.toLowerCase())) {
|
if (!USER_PREFIX.equals(rootPath.toLowerCase()) && !ADMIN_PREFIX.equals(rootPath.toLowerCase())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
String jwtStr = request.getHeader("Authorization");
|
|
||||||
if (jwtStr == null || jwtStr.isEmpty()) {
|
if (jwtStr == null || jwtStr.isEmpty()) {
|
||||||
return writeResponse(ResponseEnum.HAVE_NOT_LOG_IN, response, request);
|
return writeResponse(ResponseEnum.HAVE_NOT_LOG_IN, response, request);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
package cn.celess.blog.configuration.listener;
|
package cn.celess.blog.configuration.listener;
|
||||||
|
|
||||||
import cn.celess.blog.entity.User;
|
|
||||||
import cn.celess.blog.util.RedisUserUtil;
|
import cn.celess.blog.util.RedisUserUtil;
|
||||||
import org.slf4j.Logger;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import javax.servlet.annotation.WebListener;
|
import javax.servlet.annotation.WebListener;
|
||||||
@@ -17,20 +15,21 @@ import java.util.HashMap;
|
|||||||
* @Date: 2019/10/18 15:33
|
* @Date: 2019/10/18 15:33
|
||||||
* @Description: 监听session的情况
|
* @Description: 监听session的情况
|
||||||
*/
|
*/
|
||||||
|
@Log4j2
|
||||||
@WebListener
|
@WebListener
|
||||||
public class SessionListener implements HttpSessionListener {
|
public class SessionListener implements HttpSessionListener {
|
||||||
@Autowired
|
@Autowired
|
||||||
RedisUserUtil redisUserUtil;
|
RedisUserUtil redisUserUtil;
|
||||||
@Autowired
|
@Autowired
|
||||||
HttpServletRequest request;
|
HttpServletRequest request;
|
||||||
private static final Logger logger = LoggerFactory.getLogger(SessionListener.class);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sessionCreated(HttpSessionEvent se) {
|
public void sessionCreated(HttpSessionEvent se) {
|
||||||
// TODO : can move 'visit' api to here
|
// TODO : can move 'visit' api to here
|
||||||
se.getSession().setAttribute("visitDetail", new HashMap<String, Integer>());
|
se.getSession().setAttribute("visitDetail", new HashMap<String, Integer>());
|
||||||
// se.getSession().setMaxInactiveInterval(10);// 10s for debug
|
// 10s for debug
|
||||||
logger.info("新增一个Session[{}]", se.getSession().getId());
|
// se.getSession().setMaxInactiveInterval(10);
|
||||||
|
// log.info("新增一个Session[{}]", se.getSession().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@@ -39,12 +38,15 @@ public class SessionListener implements HttpSessionListener {
|
|||||||
HashMap<String, Integer> visitDetail = (HashMap<String, Integer>) se.getSession().getAttribute("visitDetail");
|
HashMap<String, Integer> visitDetail = (HashMap<String, Integer>) se.getSession().getAttribute("visitDetail");
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("ip => ").append(se.getSession().getAttribute("ip"));
|
sb.append("ip => ").append(se.getSession().getAttribute("ip"));
|
||||||
User user = redisUserUtil.get();
|
if (visitDetail.size() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
sb.append("\t登录情况 => ");
|
sb.append("\t登录情况 => ");
|
||||||
sb.append(user == null ? "游客访问" : user.getEmail());
|
String email = (String) se.getSession().getAttribute("email");
|
||||||
|
sb.append(email == null ? "游客访问" : email);
|
||||||
visitDetail.forEach((s, integer) -> {
|
visitDetail.forEach((s, integer) -> {
|
||||||
sb.append("\n").append("Method:[").append(s.split(":")[1]).append("]\tTimes:[").append(integer).append("]\tPath:[").append(s.split(":")[0]).append("]");
|
sb.append("\n").append("Method:[").append(s.split(":")[1]).append("]\tTimes:[").append(integer).append("]\tPath:[").append(s.split(":")[0]).append("]");
|
||||||
});
|
});
|
||||||
logger.info(sb.toString());
|
log.info(sb.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user