Spring Boot
用户进入登录页面后,必须进行登录才可以访问后台页面,如果没有登录是不能直接访问后台页面的!所以我们需要注册一个拦截器,实现此操作:
1、编写拦截器
获取用户登录Session属性,进行判断,如果未登录,则跳转至登录页面 /index.html
,并向前端输出信息 没有权限请先登录
:
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object loginUser = request.getSession().getAttribute("loginUser");
//未登录
if (loginUser==null){
request.setAttribute("msg","没有权限请先登录");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else {
return true;
}
}
}
2、在配置类中注册拦截器
添加拦截目标,所有请求都应该被拦截 /**
;排除不能拦截的目标,如 静态资源:/asserts/**
(asserts目录下的所有资源:css、js、img…)、登录成功后和跳转登录页面也不能被拦截:
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor())
.addPathPatterns("/**") //添加拦截目标
.excludePathPatterns("/index.html","/","/user/login")
.excludePathPatterns("/asserts/**"); //排除拦截目标:如静态资源不拦截
}
}
效果实现:
当你直接访问后台页面时:
//下篇再见…谢谢