Configuration d'interception de connexion SpringBoot (disponible via une mesure réelle)

Contexte: J'ai écrit un bloqueur de connexion utilisateur. J'ai cherché sur Internet et je n'ai rien trouvé d'utile. Alors je l'ai essayé moi-même, je l'ai résumé et je l'ai partagé avec tout le monde.

1. Intercepteur de connexion personnalisé 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. Ajouter un intercepteur dans WebConfigurer

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    
    

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    
    
        //注册TestInterceptor拦截器
        registry.addInterceptor(new LoginInterceptor())
                .addPathPatterns("/**")
                // 排除登录注册等接口,注意这里的格式是 /**/xxx
                .excludePathPatterns("/**/login", "/**/register");  
    }
}

3. Interface de connexion

 /**
     * 登录
     * @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;
}

Les détails du code dans l'article ne sont pas listés un par un. Les intercepteurs discutés ici sont concentrés sur. Les amis intéressés peuvent discuter avec moi pour obtenir d'autres codes.

résultat

Si vous n'êtes pas connecté, demandez à l'interface normale de vous demander de ne pas vous connecter.

Demander une interface de connexion.

Après vous être connecté, allez demander l'interface normale et revenez à la normale.

-FIN-

Les amis qui aiment Java peuvent suivre mon compte officiel: Guide d'apprentissage Java , partager une astuce d'apprentissage Java tous les jours.

Je suppose que tu aimes

Origine blog.csdn.net/xqnode/article/details/107468535
conseillé
Classement