SpringBoot 配置拦截器
① 将登录的对象存到 session
AdminController 核心添加session
package com.example.demo.controller;
import com.example.demo.bean.Admin;
import com.example.demo.services.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.server.Session;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
import java.util.List;
@Controller
public class AdminController {
@Autowired
AdminService adminService;
@RequestMapping("/admin/login")
public String login(Admin admin, Model model, HttpSession session){
Admin loginAdmin = adminService.login(admin);
if(loginAdmin != null){
session.setAttribute("loginUser",admin.getUsername()); //core
return "main-admin";
} else {
model.addAttribute("login_msg", "用户名或密码错误!");
return "index";
}
}
}
② 自定义拦截器
LoginInterceptor
package com.example.demo.config;
import com.example.demo.bean.Admin;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object admin = request.getSession().getAttribute("loginUser");
if(admin == null){
request.setAttribute("login_msg","没有权限,请先登录!");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
} else {
return true;
}
}
}
③ 在 WebMvcConfigurer 中注册拦截器
WebConfiger 这里需要主要排除的拦截资源,防止登录页面或者样式资源被拦截的情况
package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfiger implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/main.html").setViewName("main-admin");
}
//自定义国际化组件
@Bean
public LocaleResolver localeResolver() {
return new MyLocaleResolver();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).
addPathPatterns("/**").
excludePathPatterns("/index.html","/","/admin/login","/asserts/**");
}
}
over~