Springboot中使用拦截器
在原有项目的基础上添加拦截器提示错误信息的跳转
登录的判断将取得的用户存放到session中
编写一个拦截器
重写方法
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//每一个项目对于登陆的实现逻辑都有所区别,这里使用最简单的Session提取User来验证登陆。
HttpSession session = request.getSession();
//这里的User是登陆时放入session的
User user = (User) session.getAttribute("user");
//如果session中没有user,表示没登陆
if (user == null) {
//这个方法返回false表示忽略当前请求,如果一个用户调用了需要登陆才能使用的接口,如果他没有登陆这里会直接忽略掉
//重定向到错误信息页面
//当然你也可以利用response给用户返回一些提示信息,告诉他没登陆
response.sendRedirect(request.getContextPath() + "/user/error");
return false;
} else {
return true;
//如果session里有user,表示该用户已经登陆,放行,用户即可继续调用自己需要的接口
}
}
编写配置类
其实和SSM中的拦截器基本上一样
@Autowired
private UserLoginInter userLoginInter;
// 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效
@Override
public void addInterceptors(InterceptorRegistry registry) {
//拦截的路径
String[] addPathPattern = {"/user/**"};
//放行的路径
String[] excludePath = {
"/user/index", "/user/login", "/user/error", "/user/loginIng"
};
//为自己定义好的拦截器添加路径 registry.addInterceptor(userLoginInter).addPathPatterns(addPathPattern).excludePathPatterns(excludePath);
}
此时运行项目
这是登录成功后跳转的路径
http://localhost:8080/user/mian
跳过登录步骤直接访问
结果重定向到此
提示错误