Javaweb用过滤器写防跳墙功能和退出登录

打印 上一主题 下一主题

主题 802|帖子 802|积分 2406

一、什么是防跳墙功能:

        防跳墙功能通常指的是防止用户在未完成认证的情况下直接访问受保护资源的功能。在 Web 开辟中,这种功能通常被称为“登录拦截”或“身份验证拦截”。
        在 Spring MVC 中,实现这种功能通常使用的是“拦截器”(Interceptor)。拦截器可以用来执行预处理或后处理使命,比如身份验证、权限控制等。
二、怎样与过滤器结合:

将防跳墙功能写进过滤器中,就相当于所有跳转都要颠末过滤器这一层,这样我们就只需要写一次防跳墙就能控制整个项目标跳转。
三、具体操纵: 

首先我们要创建一个过滤器,具体的写法在这篇文章:https://blog.csdn.net/daibadetianshi/article/details/140869629?spm=1001.2014.3001.5501
https://blog.csdn.net/daibadetianshi/article/details/140869629?spm=1001.2014.3001.5501
 创建完过滤器就要开始写防跳墙功能:
首先我们要在登录界面给session存好值,这个就是我们后端判断的凭证;
  1. if (login!=null){
  2.     //将键值对存入session中
  3.     session.setAttribute("user","passok");
  4.     writer.write("success");
  5. }else {
  6.     writer.write("err");
  7. }
复制代码
我们的防跳墙功能建立在session的基础上,先获取用户的session值再根据这个值举行判断;
  1. //获取已有的session会话,即使没有也不自动创建
  2.         HttpSession session = ((HttpServletRequest) servletRequest).getSession(false);
  3.         //获取浏览器导航的地址
  4.         String requestURI = ((HttpServletRequest) servletRequest).getRequestURI();
  5.         //对网址经行判断
复制代码
上面的代码完成了过滤器获取session的值和浏览器跳转的网址;
 拿到这两个值,我们先对网址举行区分把不需要权限的页面放出来,让用户不会被卡。
先判断是否为不消卡的跳转直接放行:
 不会被卡的跳转一般都是登录跳转,验证码跳转,退出登录跳转,登陆失败跳转,登录界面等等。
  1. if (requestURI.endsWith("/huanying.jsp")||requestURI.endsWith("/code")||requestURI.endsWith("/usererror")||requestURI.endsWith("/showlist")
  2.                 ||requestURI.endsWith("/httpuser")
  3.         ){
  4.             //放行
  5.             filterChain.doFilter(servletRequest,servletResponse);
  6.            
  7.         }
复制代码
 再判断session的值是否够访问的权限:
  1. else if (session==null||session.getAttribute("user")==null){
  2.             //初始化write
  3.             PrintWriter writer = servletResponse.getWriter();
  4.             //被拦截时的弹窗,将跳转到登陆界面
  5.             writer.write("<script>"+
  6.                     "alert('请登录');"+
  7.                     "window.location.href='huanying.jsp'"+
  8.                     "</script>");
  9.         }
复制代码
如果session为空或不存在,则可以判断用户优劣法跳转,没有访问权限。用弹窗告知并跳转到登陆界面。 
当session存在且有值时,就阐明有权限,是正常登录,过滤器放行。
  1. else if (session !=null &&session.getAttribute("user")!=null){
  2.             //放行
  3.             filterChain.doFilter(servletRequest,servletResponse);
  4.         }
复制代码
 四、退出登录:

退出登录就是取消相应的权限,也就是将session变为空。
  1. //获取session
  2.         HttpSession session = req.getSession();
  3.         //将session消除
  4.         session.invalidate();
复制代码
这样我们的session会话就被销毁了。 
  1. PrintWriter writer = resp.getWriter();
  2.         writer.write(
  3.                 "<script>"+
  4.                         "alert('退出成功');"+
  5.                         "window.location.href='huanying.jsp'"+
  6.                         "</script>"
  7.         );
  8.     }
复制代码
这样就乐成退出了。 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表