1. 程式人生 > >springboot使用者登入攔截

springboot使用者登入攔截

首先先寫個攔截器

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.security.auth.login.LoginContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import
javax.servlet.http.HttpSession; public class LoginContextInterceptor implements HandlerInterceptor { private static final Logger LOGGER = LoggerFactory.getLogger(LoginContextInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
Exception { // TODO Auto-generated method stub LOGGER.info("------preHandle------"); System.out.println("ContextPath" + request.getContextPath()); System.out.println("getRequestURI" + request.getRequestURI()); //獲取session HttpSession session = request.getSession(true
); //判斷使用者ID是否存在,不存在就跳轉到登入介面 if (session.getAttribute(Constant.USER_NAME) == null) { String uri = request.getRequestURI(); if (uri.startsWith("/client")) { response.sendRedirect(request.getContextPath() + "/client/loginInit"); } else { response.sendRedirect(request.getContextPath() + "/loginInit"); } return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO Auto-generated method stub } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO Auto-generated method stub } }

然後自己寫個配置類

package com.yuanh.mes.config;

import com.yuanh.mes.interceptor.LoginContextInterceptor;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ResourceUtils;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
//@EnableWebMvc
@ComponentScan
public class WebConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {

    private ApplicationContext applicationContext;

    public WebConfig(){
        super();
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/static/");
        registry.addResourceHandler("/templates/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/templates/");

        super.addResourceHandlers(registry);  
        }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    } 
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //攔截規則:除了excludePathPatterns中地址,其他都攔截判斷
        registry.addInterceptor(new LoginContextInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/login","/loginInit","/error", "/client/login", "/client/loginInit", "/proOrderReport/list");
        super.addInterceptors(registry);
    }

}

ok了,就是這麼簡單