1. 程式人生 > >SpringBoot 登陸攔截

SpringBoot 登陸攔截

1.登陸攔截器 :建立一個類 實現 HandlerInterceptor 看具體程式碼

package com.bw.data.portal.conf;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/**
 * 登陸攔截
 * @author wangmx
 */
public class LoginHanderInterceptor implements HandlerInterceptor{

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// TODO Auto-generated method stub
        //獲取 session中的 使用者資訊
		Object user = request.getSession().getAttribute( "fuser" );
		if (user == null){
            System.out.println( "登陸攔截" );
            //跳轉到 登陸的controller  /ful/nologin   是直接返回 到登陸介面的 controller
            request.getRequestDispatcher( "/ful/nologin" ).forward( request,response );
            return false;
        }else {
            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.攔截器註冊:建立 一個類繼承 WebMvcConfigurerAdapter  接著看程式碼

 package com.bw.data.portal.common.config.mvc;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import com.bw.data.portal.conf.LoginHanderInterceptor;

/*
* 類描述:springMVC的配置
* @auther wangmx
* @create 2018/8/20  
*/
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    /**
     * 登陸攔截
     * wangmx
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    	 registry.addInterceptor( new LoginHanderInterceptor())
         .addPathPatterns( "/**" ).excludePathPatterns("/", "/index.jsp","/ful/nologin","/ful/login");
        //除了index.jsp 和 /ful/nologin 和 /ful/login 全部攔截
    }
    

}

3.登陸的controller:

//登陸攔截之後 跳轉的 controller
@RequestMapping(value = "/nologin")
	 public String myDataAndReport() {
		
		return "redirect:/login.jsp";
}

登陸頁面 正常採用 from表單提交就可以了