springboot登录拦截器

本文介绍了如何在SpringMVC中创建自定义拦截器来处理登录验证。登录接口包括用户验证和登出功能,而拦截器则在每个请求之前检查用户是否已登录。拦截器类实现了HandlerInterceptor接口,并覆写了preHandle方法以判断用户session中的登录信息。登录配置类使用@Configuration和@WebMvcConfigurer注解进行配置,添加并排除特定的拦截路径。
摘要由CSDN通过智能技术生成

目录

登录和退出登录接口

自定义拦截器类

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
    评论
以下是在Spring Boot中实现拦截器进行登录验证的步骤: 1. 创建一个实现HandlerInterceptor接口的拦截器类,重写preHandle方法,在该方法中进行登录验证。如果验证通过,返回true,否则返回false。 ```java public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(); Object user = session.getAttribute("user"); if (user == null) { response.sendRedirect("/login"); return false; } return true; } } ``` 2. 在Spring Boot配置类中注册拦截器。 ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login", "/register"); } } ``` 在上面的代码中,我们创建了一个WebMvcConfig类,并实现了WebMvcConfigurer接口。在该类中,我们重写了addInterceptors方法,并在其中注册了我们创建的LoginInterceptor拦截器。我们使用addPathPatterns方法指定需要拦截的请求路径,使用excludePathPatterns方法指定不需要拦截的请求路径。 3. 在登录页面中添加登录表单,并在登录表单中提交用户名和密码。 ```html <form action="/login" method="post"> <input type="text" name="username" placeholder="Username"> <input type="password" name="password" placeholder="Password"> <button type="submit">Login</button> </form> ``` 4. 在登录请求的Controller中进行登录验证,并将用户信息存储到Session中。 ```java @PostMapping("/login") public String login(@RequestParam String username, @RequestParam String password, HttpSession session) { if ("admin".equals(username) && "123456".equals(password)) { session.setAttribute("user", username); return "redirect:/home"; } else { return "redirect:/login"; } } ``` 在上面的代码中,我们创建了一个/login的POST请求处理方法,并在该方法中进行登录验证。如果用户名和密码正确,我们将用户信息存储到Session中,并重定向到/home页面。否则,我们重定向到登录页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值