Configuración de interceptación de inicio de sesión SpringBoot (disponible a través de la medición real)

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.

Supongo que te gusta

Origin blog.csdn.net/xqnode/article/details/107468535
Recomendado
Clasificación