一 相关配置
1 登录拦截器
package com.ckf.springbootinterceptor.config;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
public class LoginInterceptor implements HandlerInterceptor {
private List urls = new ArrayList<>();
@Override
public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception {
HttpSession session = request.getSession();
if (session.getAttribute(“username”) != null) {
// 已登录,放行。。
return true;
} else {
System.out.println(“你还没登录,没有权限”);
// 未登录,拦截 返回login
response.sendRedirect("/login");
return false;
}
}
public List getUrls() {
urls.add("/login"); // login url请求
urls.add("/doLogin"); // 登录请求
urls.add("/no_login");
urls.add("/swagger-ui.html");
// 静态资源
urls.add("/img/");
urls.add("/js/");
urls.add("/css
@Bean
public Docket createDocketApi() {
return new Docket(documentationType.SWAGGER_2).pathMapping("/").select().apis(RequestHandlerSelectors.basePackage(“com.ckf”))
.paths(PathSelectors.any())
.build().apiInfo(new ApiInfoBuilder()
.title(“拦截系统项目 API 文档”)
.description(“演示SpringBoot整合Swagger…”)
.version(“2.2.3”)
.contact(new Contact(“cakin”, “https://blog.csdn.net/chengqiuming”, “798103175@qq.com”))
.license(“The Apache License”)
.licenseUrl(“https://blog.csdn.net/chengqiuming”)
.build());
}
}
3 MVC配置
package com.ckf.springbootinterceptor.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Override
public void addInterceptors( InterceptorRegistry registry ) {
// 实例化登录拦截器,用于注册
LoginInterceptor loginInterceptor = new LoginInterceptor();
registry.addInterceptor(loginInterceptor).addPathPatterns("/")
.excludePathPatterns("/swagger-resources/")
.excludePathPatterns(loginInterceptor.getUrls());
WebMvcConfigurer.super.addInterceptors(registry);
}
}
二 控制器
package com.ckf.springbootinterceptor.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import javax.servlet.http.HttpSession;
@PostMapping("/doLogin")
public String login( String userName, String password, HttpSession session ) {
if (userName.equals(“admin”) && password.equals(“123456”)) {
session.setAttribute(“username”, userName);
//登录成功返回index 否则返回登录
return “index”;
}
return “login”;
}
@GetMapping("/login")
public String loginView() {
return “login”;
}
@GetMapping("/no_login")
public String noLogin() {
return “no_login”;
}
@GetMapping("/orders")
public String orders() {
return “orders”;
}
@GetMapping("/user")
public String user() {
return “user”;
}
}
三 视图
1 index.html
返回登录
4 orders.html


