0
点赞
收藏
分享

微信扫一扫

Springboot配置拦截器

晒大太阳了 2022-03-13 阅读 195

1.建立一个拦截器类,继承拦截器的接口HandlerInterceptor,实现接口中的方法

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginHandlerInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       // 登录成功之后,应该有用户的session
        Object loginUser = request.getSession().getAttribute("loginUser");
        if(loginUser == null){ //没有登录
            request.setAttribute("msg","没有权限,请先登录");
           request.getRequestDispatcher("/index.html").forward(request,response);
            return false;
        }else{
            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 {
    }
}

2. 在config类中配置拦截器,自己建立的config类必须实现 WebMvcConfigurer接口,然后在该类中实现该接口中的方法,其中addPathPatterns()方法是指拦截的URL,excludePathPatterns()方法是指需要放行的url,例如首页,登录页面,还有页面的一些静态资源等等。

@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor()).
                addPathPatterns("/**").
                excludePathPatterns("/index.html","/","/user/login","/css/*","/js/**","/img/**");

    }

3.在登录页面的controller中,进行具体的业务逻辑

 @RequestMapping("/user/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        Model model, HttpSession session){
        // 具体的业务
        if(!StringUtils.isEmpty(username) && "123456".equals(password)){
            session.setAttribute("loginUser",username);
            return "redirect:/main.html";
        }else{
            model.addAttribute("msg","用户名为空或密码错误");
            return "index";
        }
    }
举报

相关推荐

0 条评论