SpringBoot图文并茂讲解登录拦截器

其实spring boot拦截器的配置方式和springMVC差不多,只有一些小的改变需要注意下就ok了,下面这篇文章主要给大家介绍了关于如何在Springboot实现登陆拦截器功能的相关资料,需要的朋友可以参考下

1.相关概念

1.实现效果

当没有输入正确的账号密码登录成功时, 除了登录页,其他页面都无法访问(静态资源要放行)

2.实现步骤

  • 编写一个拦截器实现HandlerInterceptor接口
  • 拦截器注册到容器中(实现WebMvcConfigurer的addInterceptors())
  • 指定拦截规则(注意,如果是拦截所有,静态资源也会被拦截)

2.代码实现

1.配置文件

pom.xml

  4.0.0 org.springframework.bootspring-boot-starter-parent2.7.0com.limispringboot-test20.0.1-SNAPSHOTspringboot-test2Demo project for Spring Boot 1.8  org.springframework.bootspring-boot-starter-web org.springframework.bootspring-boot-devtoolsruntimetrue org.projectlomboklomboktrue org.springframework.bootspring-boot-starter-testtest org.springframework.bootspring-boot-configuration-processortrue   org.springframework.bootspring-boot-maven-plugin   org.projectlomboklombok org.springframework.bootspring-boot-maven-plugin   org.springframework.bootspring-boot-configuration-processor

application.properties

server.port=8080

2.java代码

SpringbootTest2Application

package com.limi.springboottest2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; @SpringBootApplication public class SpringbootTest2Application { public static void main(String[] args) { //1、返回我们IOC容器 ConfigurableApplicationContext run = SpringApplication.run(SpringbootTest2Application.class, args); } }

LoginInterceptor

package com.limi.springboottest2.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("=========LoginInterceptor preHandle=========="); HttpSession session = request.getSession(); if(session.getAttribute("username")==null) //未登录 { //未登录, 重定向到登录页 response.sendRedirect("/index");  //重定向到登录controller return false;//拦截 } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("==========LoginInterceptor postHandle=========="); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("==========LoginInterceptor afterCompletion=========="); } }

WebConfig

package com.limi.springboottest2.config; import com.limi.springboottest2.interceptor.LoginInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor())//拦截器注册到容器中 .addPathPatterns("/**")  //所有请求都被拦截包括静态资源 .excludePathPatterns("/index", "/login") //放行的网络请求, .excludePathPatterns("/view/index.html","/css/**","/images/**", "/js/**"); //放行的资源请求 } }

HelloController

package com.limi.springboottest2.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpSession; @Controller public class HelloController { @GetMapping("/index") public String index(){ return "/view/index.html";  //没有使用模板引擎, 所以要带上后缀 } @PostMapping("/login") public String login(HttpSession session, String username, String password){ System.out.println("username:"+username+"   password:"+password); if("andy".equals(username)&&"123456".equals(password)) { //账号密码匹配成功 session.setAttribute("username", username); return "redirect:/success"; } return "redirect:/index"; } @GetMapping("/success") public ModelAndView test1(HttpSession session){ System.out.println("======执行控制器中方法success======"); String name = (String)session.getAttribute("username"); ModelAndView mv = new ModelAndView(); mv.addObject("name", name); mv.setViewName("/view/success.html"); return mv; } }

3.前端代码

index.css

h1{
    color: blueviolet;
}

index.html

  Title 

请输入账号密码进行登录!

账号
密码

success.html

  Title

登录成功!

3.运行测试

1.直接通过网址访问登录成功页面

被重定向到登录页

2.输入错误账号密码

被重定向到登录页

3.输入正确账号密码

到此这篇关于SpringBoot图文并茂讲解登录拦截器的文章就介绍到这了,更多相关SpringBoot登录拦截器内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是SpringBoot图文并茂讲解登录拦截器的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java