1.LoginController
@Controller
public class LoginController {
@PostMapping(value = "/user/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
Map<String,Object> map, HttpSession session){
if(!StringUtils.isEmpty(username)&&password.equals("123456")){
//将用户信息存到session中,用于判断用户是否登录
session.setAttribute("loginUser",username);
//登录成功,防止表单重复提交,重定向到main.html
return "redirect:/main.html";
}
//登录失败
map.put("msg","用户名密码错误");
return "login";
}
}
2.application.properties
//设置项目路径
server.servlet.context-path=/crud
3.LoginHandlerInterceptor
/**
* 登录检查:没有登录的用户不能访问main.html
*/
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//从session中取用户信息,判断是否登录
Object user = request.getSession().getAttribute("loginUser");
if(user == null){
//未登录,拦截到登入页面
request.setAttribute("msg","没有权限,请先登录");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else{
//已登录,放行
return true;
}
}
@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 {
}
}
4.前端错误信息提示
//如果信息不为空,那么就显示错误提示
5.登录后跳转前端显示用户信息
[[${session.loginUser}]]
6.注册拦截器
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Bean
public WebMvcConfigurer webMvcConfigurer(){
WebMvcConfigurer webMvcConfigurer = new WebMvcConfigurer() {
//添加路径映射
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html").setViewName("login");
registry.addViewController("/main.html").setViewName("dashboard");
}
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
.addPathPatterns().excludePathPatterns("/index.html","/","/user/login");
}
/**
* 配置静态访问资源
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/asserts/**").addResourceLocations("classpath:/static/asserts/");
}
};
return webMvcConfigurer;
}
}