Antecedentes: escribí un bloqueador de inicio de sesión de usuario. Busqué en Internet y no encontré nada útil. Así que lo probé yo mismo, lo resumí y lo compartí con todos.
1. Interceptor de inicio de sesión personalizado LoginInterceptor
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 这里是关键
User loginUser = (User) request.getSession().getAttribute("user");
if (loginUser == null) {
// 未登录抛出异常,交给统一异常处理器处理
throw new CustomException(ResultCode.USER_NOT_LOGIN);
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
2. Agregue un interceptor en WebConfigurer
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册TestInterceptor拦截器
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**")
// 排除登录注册等接口,注意这里的格式是 /**/xxx
.excludePathPatterns("/**/login", "/**/register");
}
}
3. Interfaz de inicio de sesión
/**
* 登录
* @return 用户信息
*/
public User login(UserVO userVO. HttpServlet) {
String username = userVO.getUsername();
String password = userVO.getPassword();
User user = userMapper.findByUsernameAndPassword(username, password);
// 未找到用户
if(user == null) {
throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
}
// 设置session中的用户信息
SessionUtils.setSessionAttribute("user", user);
return user;
}
Los detalles del código en el artículo no se enumeran uno por uno. Los interceptores discutidos aquí están enfocados y los amigos interesados pueden charlar conmigo en privado para obtener otros códigos.
resultado
Si no ha iniciado sesión, solicite a la interfaz normal que le indique que no ha iniciado sesión.
Solicitar interfaz de inicio de sesión.
Después de iniciar sesión, vaya a solicitar la interfaz normal y vuelva a la normalidad.
-FIN-
Los amigos a los que les gusta Java pueden seguir mi cuenta oficial: Guía de aprendizaje de Java , compartir un consejo de aprendizaje de Java todos los días.