-
将数据存到session中
@Controller public class LoginController { @RequestMapping("/user/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, Map<String,Object> map,HttpSession session){ // 具体的业务 if(!StringUtils.isEmpty(username) && "123".equals(password)){ // 登录成功,防止表单重复提交,可以重定向到主页 session.setAttribute("loginUser",username);//session 存数据(将用户名存到session中) return "redirect:/main.html"; }else{ // 告诉用户,你登录失败 map.put("msg","用户名或密码错误"); return "login"; } } }
-
登录检查,没有登录进不去页面
/** * @author tyh * @create 2020-09-09 21:42 */ // 登录检查,没有登录进不去页面 public class LoginHanderInterceptor implements HandlerInterceptor { /** * 在请求处理之前进行调用(Controller方法调用之前) */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // System.out.println("执行了LoginHanderInterceptor的preHandle方法"); // 登录成功之后,应该有用户的session // 统一拦截(查询当前session是否存在user)(这里user会在每次登陆成功后,写入session) Object loginUser = request.getSession().getAttribute("loginUser"); //获取session的值 if(loginUser==null){ //没有登录,返回登录页面 request.setAttribute("msg","没有权限请先登录"); request.getRequestDispatcher("/index.html").forward(request,response); return false; }else { // 已登录,放行请求 return true; // 如果设置为false时,被请求时,拦截器执行到此处将不会继续操作 // 如果设置为true时,请求将会继续执行后面的操作 } } /** * 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } /** * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
-
添加到容器中(拦截器配置)
** * @author tyh * @create 2020-09-09 9:02 */ //应为类型要求为WebMvcConfigurer,所以我们实现其接口 //可以使用自定义类扩展MVC的功能 @Configuration //@EnableWebMvc public class MyMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { //注册TestInterceptor拦截器 InterceptorRegistration registration = registry.addInterceptor(new LoginHanderInterceptor()); registration.addPathPatterns("/**"); //所有路径都被拦截 registration.excludePathPatterns( //添加不拦截路径 "/","/index.html", "/user/login", //登录 "/**/js/**", //js静态资源 "/**/css/**", //css静态资源 "/**/img/**" //img静态资源 ); } }
-
-
拦截器进行登录检查
最新推荐文章于 2023-02-21 17:35:17 发布