springboot登录拦截器

目录

登录和退出登录接口

自定义拦截器类

1.当前类交给spring管理

2.实现HandlerInterceptor接口

3.覆写preHandle方法

登录配置类

1.申明当前类是配置类

2.实现WebMvcConfigurer接口

3.覆写addInterceptors方法

4.配置拦截器类,拦截路径,放行路径


登录和退出登录接口

 //验证登录 Post
    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public String login(Admin admin, Model model, HttpSession session){
        //数据库查询是否有该用户的信息
        Admin a2 = adminService.loadOne(admin);
        if (a2!=null) {//用户存在
            //保存用户信息,session
            session.setAttribute("INFO",a2);
            //去首页
            return "index";
        } else {//用户不存在
            //提示错误信息
            model.addAttribute("error","用户名或者密码错误");
            //返回到登录页
            return "login";
        }
    }

 //退出登录
    @RequestMapping("/logout")
    public String logout(HttpServletRequest request) {
        HttpSession session = request.getSession();
        session.setAttribute("INFO",null);
        return "login";
    }

自定义拦截器类

1.当前类交给spring管理

2.实现HandlerInterceptor接口

它有三个方法,分别是在请求前中后执行

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    }

 @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 {

    }

因为用户每次请求的时候,我们要判断他是否登录,所以在每次请求前就要拦截,并判断是否放行,所以

3.覆写preHandle方法

 @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       //从session读取用户信息
        Object info = request.getSession().getAttribute("INFO");
        if (info!=null){//用户信息存在
            //放行
            return true;
        }else {
            //不放行,返回登录页
            response.sendRedirect("/system/login");
            return false;
        }
    }

登录配置类

1.申明当前类是配置类

类上加上注解@Configuration

2.实现WebMvcConfigurer接口

3.覆写addInterceptors方法

4.配置拦截器类,拦截路径,放行路径

//声明当前类是一个配置类
@Configuration
public class LoginConfig implements WebMvcConfigurer {
    @Autowired
    private LoginInterceptor loginInterceptor;
    //配置拦截器

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //配置拦截器类
        registry.addInterceptor(loginInterceptor)
                //配置需要拦截的路径
                .addPathPatterns("/system/**")
                //配置需要放行的路径
                .excludePathPatterns("/system/login");

        //如果拦截的/**
        /*registry.addInterceptor(loginInterceptor)
                //配置的是拦截所有 /**会拦截静态资源
                .addPathPatterns("/**")
                .excludePathPatterns("/system/login")
                .excludePathPatterns("/img/**")
                .excludePathPatterns("/min/**")
                .excludePathPatterns("/Scripts/**")
                .excludePathPatterns("/Styles/**")
                .excludePathPatterns("/Template/**")
                .excludePathPatterns("/chur-alert.1.0.js");*/

    }
}

个人学习总结,便于将来复习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值