Spring Boot 拦截器配置

Spring Boot 的拦截器的配置

ps.(可能不是最好的步骤,但是简单的配置大概就是这样,大家可上网自己去查询)

步骤大览

1.创建拦截器类并实现 HandlerInterceptor 接口。

2.创建一个Java类继承WebMvcConfigurer并重写 addInterceptors 方法。

3.实例化我们自定义的拦截器,然后将对像手动添加到拦截器链中(在addInterceptors方法中添加)。

1.(创建java类实现 HandlerInterceptor 接口)是一个拦截器

我这里是判断拦截的登录信息中的是否有 uid
(数据库中对应的用户的id,取名为uid. 在登录的时,我把用户对应的username和uid放到了session中,方便获取用户的信息)

类名        interceptor
 
package store.interceptor;

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

import org.springframework.web.servlet.HandlerInterceptor;

/**
 * 登录拦截器
 */
public class LoginInterceptor implements HandlerInterceptor {
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// 获取HttpSession对象
		HttpSession session = request.getSession();
		// 判断session中是否有登录信息
		if (session.getAttribute("uid") == null) {
			// 没有登录信息,则重定向到登录页
			response.sendRedirect("/web/login.html");
			// 执行拦截
			return false;
		}
		// 放行
		return true;
	}

}

2.(创建一个Java类继承WebMvcConfigurer并重写 addInterceptors 方法。

注意添加配置文件的注释 @Configuration)

package store.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration // 方便springBoot去扫描这个类
public class InterceptorConfigurer	implements WebMvcConfigurer {

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
	}
	
}

3.实例化我们自定义的拦截器,然后将对像手动添加到拦截器链中(在addInterceptors方法中添加)

package store.config;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import cn.tedu.store.interceptor.LoginInterceptor;

@Configuration // 方便springBoot去扫描这个类
public class InterceptorConfigurer
	implements WebMvcConfigurer {

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// 创建拦截器对象
		HandlerInterceptor interceptor = new LoginInterceptor();
		
		// 不拦截名单
		List patterns = new ArrayList<>();
		patterns.add("/bootstrap3/**");
		patterns.add("/css/**");
		patterns.add("/js/**");
		patterns.add("/images/**");
		
		patterns.add("/web/register.html");
		patterns.add("/web/login.html");
		patterns.add("/web/index.html");
		patterns.add("/web/product.html");
		
		patterns.add("/users/reg");
		patterns.add("/users/login");
		
		patterns.add("/districts/**");
		patterns.add("/products/**");
		
		// 注册拦截器

		registry.addInterceptor(interceptor) //添加你自定义拦截器的实现逻辑类  我添加的是上面的继承了 HandlerInterceptor 接口的类
				.addPathPatterns("/**")  //添加要拦截的路径   拦截所有的页面
			  	.excludePathPatterns(patterns);  ///添加你不需要拦截的请求路径   把 List 的集合放入,如有需要以后把不拦截的添加到List集合中即可
	}
	
}

你可能感兴趣的:(拦截器,Spring,Boot,的拦截器)