springboot2.1.7版本配置拦截器

第一步:写一个自己的拦截器

public class LoginHandlerIntercepter implements HandlerInterceptor {
    private final Logger logger = LoggerFactory.getLogger(LoginHandlerIntercepter.class);
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        logger.info("拦截到请求");
        Object user = request.getSession().getAttribute("LoginUser");
        if (user == null) {
            //未登录,返回登录界面
            try {
//                request.setAttribute("msg", "你无权登录");
//                request.getRequestDispatcher("/index.html").forward(request, response);
                response.sendRedirect("/index.html");
            } catch (Exception e) {
                logger.error(e.getMessage());
                e.printStackTrace();
            }
            logger.info("处理完请求,不知道是不时跳转过去了");
            return false;
        } else {
            //已登录,返回true允许访问
            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 {

    }
}
//这里本想用服务器内部的跳转,携带请求msg信息,方便在前台给出相应的提时,可是不知道为什么会500错误,
//找了很久不知道什么原因,先放弃了,知道 的大神可以告诉我一下啊,模板引擎用的是springboot推荐的thymeleaf

第二步:在WebMvcConfig中添加拦截器,只需要重写addIntrceptors方法就可以了,并添加拦截的内容:

springboot会把任何WebMvcConfig类型的bean自动识别。从写的方法会用我们自己写的,没有重写的部分会用springboot为我们自动配置的。前提时不要使用@EnableWebMvc的那个标签:这个标签的意思是,全面接管springMVC的配置,所有的配置我们都得配置一遍,不然很多功能不能正常运行。

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
    /**
     * 默认首页设置,当请求时项目地址的时候 返回login
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/index.html").setViewName("login");
        registry.addViewController("/main.html").setViewName("dashboard");
    }

    /**
     * 添加拦截器,并排除不需要拦截的地址
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerIntercepter()).addPathPatterns("/**")
                .excludePathPatterns("/index.html", "/", "/user/login","/asserts/**","/webjars/**");
    }
}

**到这里就可以,只要被链接的请求,在没有登录的情况下,都会被强制转到登录界面;但是没有提示,如果想要携带信息过去就得用
request.setAttribute(“msg”, “你无权登录”);
request.getRequestDispatcher("/index.html").forward(request, response);
在页面接受msg信息就可以了 用thymleaf模板的话可以

 <p style="color: #34ce57" th:text="${msg}" th:if="${not #strings.isEmpty(msg)}"></p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值