(1), 编写拦截器
- package cn.coreqi.config;
- import org.springframework.util.StringUtils;
- import org.springframework.web.servlet.HandlerInterceptor;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- public class LoginHandlerInterceptor implements HandlerInterceptor {
- // 在目标方法执行之前运行此方法
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- HttpSession session = request.getSession();
- String loginUser = (String) session.getAttribute("loginUser");
- if(StringUtils.isEmpty(loginUser)){
- // 说明用户未登陆
- request.setAttribute("msg","没有相应权限请先登陆");
- request.getRequestDispatcher("/index.html").forward(request,response);
- return false;
- }
- return true;
- }
- }
(2), 对拦截器进行注册
- package cn.coreqi.config;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.Web.servlet.LocaleResolver;
- import org.springframework.Web.servlet.config.annotation.*;
- /**
- * 扩展 SpringMVC
- * SpringBoot2 使用的 Spring5, 因此将 WebMvcConfigurerAdapter 改为 WebMvcConfigurer
- * 使用 WebMvcConfigurer 扩展 SpringMVC 好处既保留了 SpringBoot 的自动配置, 又能用到我们自己的配置
- */
- //@EnableWebMvc // 如果我们需要全面接管 SpringBoot 中的 SpringMVC 配置则开启此注解,
- // 开启后, SpringMVC 的自动配置将会失效.
- @Configuration
- public class WebConfig implements WebMvcConfigurer {
- @Override
- public void addViewControllers(ViewControllerRegistry registry) {
- // 设置对 "/" 的请求映射到 index
- // 如果没有数据返回到页面, 没有必要用控制器方法对请求进行映射
- registry.addViewController("/").setViewName("index");
- }
- // 注册拦截器
- @Override
- public void addInterceptors(InterceptorRegistry registry) {
- //SpringMVC 下, 拦截器的注册需要排除对静态资源的拦截 (*.CSS,*.JS)
- //SpringBoot 已经做好了静态资源的映射, 因此我们无需任何操作
- registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
- .excludePathPatterns("/index.html","/","/user/login");
- }
- }
来源: http://www.bubuko.com/infodetail-2934862.html