目录
登录和退出登录接口
//验证登录 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");*/
}
}
个人学习总结,便于将来复习