访问/user/login登录账户
登录逻辑
用户登陆成功 给客户端的 session Key 设置loginUser值
下一次用户访问主页 判断用户session Key 是否存在loginUser值,存在则可以访问,不存在跳转登录页并提示信息
@Controller
public class IndexController {
@RequestMapping("/user/login")
public String dashboard(
@RequestParam("username") String username,
@RequestParam("password") String password,
Model model, HttpSession session){
if(username.equals("hc") && password.equals("1")){
session.setAttribute("loginUser","hc");
return "redirect:/main.html";
}else{
model.addAttribute("msg","账号或密码输入错误");
return "index";
}
}
}
自定义拦截器
//拦截器逻辑
public class LoginHandlerIntercptor implements HandlerInterceptor {
@Override
public boolean
preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//判断有没有登陆过
Object loginUser = request.getSession().getAttribute("loginUser");
//没有则返回首页,设置提式
if(loginUser==null){
request.setAttribute("msg","没有权限请先登录");
request.getRequestDispatcher("/").forward(request,response);
return false;
}else{
return true;
}
}
}
注入容器
1.
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//配置请求视图
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/main.html").setViewName("dashboard");
}
//配置拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerIntercptor())
.addPathPatterns("/**")
.excludePathPatterns("/","/index.html","/user/login","/css/**","/js/**","/img/**");
}
}