在Spring应用中,某些资源必须要登录后才能查看,这时候我们就需要定义一个登录拦截器,将未登录的用户请求拦截至☞登录页。
这里我们简单的从登录请求中获取session,如果其中有用户名这个属性且不为空,我们就认为用户已经登录了;如果用户未登录,将请求转发至登录页,并提示用户登录。
在登录接口中将用户名写入到session: @RequestMapping("/user/login") public String login(String username, @RequestParam("password") String passwd, ModelMap modelMap, HttpSession session) { if (!StringUtils.isEmpty((username)) && !StringUtils.isEmpty(passwd) && "admin".equals(username) && "admin".equals(passwd)) { // 将登录信息写入session session.setAttribute("username", username); return "redirect:/user/list"; } else { modelMap.addAttribute("login_error", "用户名密码错误"); return "login"; } } 将我们实现的登录拦截器注册到Spring容器 @Configuration public class WebMvcConfig implements WebMvcConfigurer { /** * 注册登录拦截器 * @param registry */ @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**") .excludePathPatterns("/", "/user/login", "/css/**", "/js/**", "/img/**"); } }这里我们拦截了除首页(/)、登录请求(/user/login)以及相关静态资源(/css/**等)外的所有请求。
至此,我们就简单做了一个登录拦截器。