过滤器思路相关问题

过滤器思路相关问题

http://img1.sycdn.imooc.com//climg/5ec6539f09560f7800000000.jpg

这个解决方案类似于白名单吗?只要 str 里有css jpg png的就放行,如果用户名为空就拦截是这个意思吗?

请老师讲解一下红色区域的indexof是为了过滤什么?

蓝色区域是以这些名字结尾的请求被过滤器放行吗?这个过滤功能深层是过滤了什么放行了什么呢?是按照元素过滤的吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、是的,相当于白名单。当用户名为空时,如果str里有css,jpg,png和login的就放行,如果没有就拦截。

当用户名不为空时,直接放行。

2、红色区域的indexOf是查看请求路径中是否包含"login"字符串,如果包含,则放行。为了过滤用户登录,对用户登陆放行。

3、是的。这个过滤功能深层是过滤了.css,.jpg等资源的请求和登陆请求,让用户可以获得资源和实现登陆。是通过对请求路径进行解析来过滤的。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 孬帮手慕小菜 提问者 #1
    老师,我验证码用的是Kaptcha生成的不知道生成的是什么格式的,我启用了过滤器不出图片了,我加str.indexOf("png")>0没有用,网页里看了验证码是个这个/KaptchaServlet结尾,我添加了一个str.indexOf("KaptchaServlet")>0 可以出验证码图片了,但是我通过验证后的登录请求好像被拦截了,点击登录会类似刷新页面的样子 package com.andreas.filter; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("用户过滤器正在工作"); String str = ((HttpServletRequest)request).getRequestURI().toString(); if(str.indexOf(".css")>0||str.indexOf(".jpg")>0||str.indexOf("KaptchaServlet")>0||str.indexOf("login")>0) { chain.doFilter(request, response); return; } User user = (User) ((HttpServletRequest)request).getSession().getAttribute("userlist"); if(user==null || "".equals(user)) { request.setAttribute("msg", "用户未登录"); ((HttpServletResponse)response).sendRedirect(((HttpServletRequest) request).getContextPath()+"/login.jsp"); //endRedirect作用是重定向网页,向浏览器发送一个特殊的Header(???),然后由浏览器来做重定向,转到指定的页面 return; }else { chain.doFilter(request, response); return; } } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub System.out.println("用户过滤器开始生效"); } } 回复内容不能多于1500个字符,我只留下了doFilter,老师辛苦帮忙看看
    2020-05-21 18:57:43
好帮手慕阿慧 2020-05-21 20:01:47

同学你好,建议同学可以在AuthFilter类中添加断点。如下:

http://img1.sycdn.imooc.com//climg/5ec66d85093fe0db10010215.jpg

以debug调试模式启动Tomcat,如下:

http://img1.sycdn.imooc.com//climg/5ec66d9d09e7ddc205020312.jpg

看一下程序执行情况。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师