SSH过滤登录问题

JackDLin 2013-09-06 06:46:34
过滤器内容
************************************************************************************
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
//验证用户是否登录
Cookie[] cookies = request.getCookies();
String sysUser = null;
if(cookies != null){
for(int i = 0; i<cookies.length; i++){
Cookie c = cookies[i];
if(c.getName().equalsIgnoreCase("sysUser")){
sysUser = c.getValue();
}
}
}
if(null == sysUser){
response.sendRedirect("/web/web/account/login.jsp");
}



arg2.doFilter(arg0, arg1);
}
**************************************************************************************
web.xml
<filter>
<filter-name>ValidateFilter</filter-name>
<filter-class>net.filter.ValidateFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ValidateFilter</filter-name>
<url-pattern>/web/user/*</url-pattern>
</filter-mapping>
*********************************************************************************

在未登录的情况下我在地址栏输入
hhttp://127.0.0.1:8080/web/web/user/index.jsp
会正常过滤,跳转到登录页面
可当我输入
http://127.0.0.1:8080/web/user.do?method=doIndex
却不能正常的过滤跳转到登录页面
同样是跳转到user文件下的index.jsp页面为什么第一个可以实现过滤而第二个不行
是不是因为过滤是针对地址栏的网址来实现过滤。
...全文
274 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlieceTT 2013-10-17
  • 打赏
  • 举报
回复
配置成“<url-pattern>/*</url-pattern>”这样 然后在过滤器里面判断是否有包含/user这个的请求即可
  • 打赏
  • 举报
回复
引用 10 楼 CB2_KJ 的回复:
如果地址是: http://127.0.0.1:8080/web/user.do?method=doIndex 要怎么过滤
上面不是说了吗???这个要慢慢去体会
JackDLin 2013-09-07
  • 打赏
  • 举报
回复
引用 8 楼 ch656409110 的回复:
[quote=引用 5 楼 CB2_KJ 的回复:] [quote=引用 4 楼 ch656409110 的回复:] /web/user/* 只会拦截user下面所有的请求
我是用SSH框架开发的系统 http://127.0.0.1:8080/web/user.do?method=doIndex 所以要用以上的方式来进入打开页面,同样是跳转到user/index.jsp <forward name="index" path="/web/user/index.jsp"></forward> [/quote] 没明白你意思啊 ,这个跟跳转方式无关啊,都会被filter拦截的。。 你配置的是/web/user/* 请求路径中满足 /web/user/* 才会验证是否登录 http://127.0.0.1:8080/web/web/user/index.jsp http://127.0.0.1:8080/web/user.do?method=doIndex 显然第二种不满足 ,要想满足,, 更改struts下的namespace, 或者 <filter-mapping> <filter-name>ValidateFilter</filter-name> <url-pattern>/web/user/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ValidateFilter</filter-name> <url-pattern>/user.do</url-pattern> </filter-mapping> 或者 除了登录页面意外干脆配置/* 拦截所有请求 [/quote] 怎么更改struts下的namespace。
编程点滴 2013-09-07
  • 打赏
  • 举报
回复
引用 10 楼 CB2_KJ 的回复:
如果地址是: http://127.0.0.1:8080/web/user.do?method=doIndex 要怎么过滤
配置成“<url-pattern>/user/*</url-pattern>”这样就可以了
编程点滴 2013-09-07
  • 打赏
  • 举报
回复
引用 7 楼 CB2_KJ 的回复:
[quote=引用 6 楼 zhongxianyao 的回复:] 你的项目名该不会是叫“web”吧
项目名是叫web 这个项目名有关?[/quote] 当然有关系了,由于你struts的配置是<url-pattern>/web/user/*</url-pattern>,是要过滤“/web/user/”这些开头的请求,又由于你的项目名是“web”,所以整一个过滤的路径是“http://127.0.0.1:8080/web/web/user/”这个下面的请求
JackDLin 2013-09-07
  • 打赏
  • 举报
回复
如果地址是: http://127.0.0.1:8080/web/user.do?method=doIndex 要怎么过滤
  • 打赏
  • 举报
回复
设置任何路径都进入过滤器不就可以了么
wenjie4892543 2013-09-06
  • 打赏
  • 举报
回复
up1111111
zyrobert 2013-09-06
  • 打赏
  • 举报
回复
/web/user/* 这个如何拦截/web/user.do?method=doIndex 格式都不一样
  • 打赏
  • 举报
回复
引用 5 楼 CB2_KJ 的回复:
[quote=引用 4 楼 ch656409110 的回复:] /web/user/* 只会拦截user下面所有的请求
我是用SSH框架开发的系统 http://127.0.0.1:8080/web/user.do?method=doIndex 所以要用以上的方式来进入打开页面,同样是跳转到user/index.jsp <forward name="index" path="/web/user/index.jsp"></forward> [/quote] 没明白你意思啊 ,这个跟跳转方式无关啊,都会被filter拦截的。。 你配置的是/web/user/* 请求路径中满足 /web/user/* 才会验证是否登录 http://127.0.0.1:8080/web/web/user/index.jsp http://127.0.0.1:8080/web/user.do?method=doIndex 显然第二种不满足 ,要想满足,, 更改struts下的namespace, 或者 <filter-mapping> <filter-name>ValidateFilter</filter-name> <url-pattern>/web/user/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>ValidateFilter</filter-name> <url-pattern>/user.do</url-pattern> </filter-mapping> 或者 除了登录页面意外干脆配置/* 拦截所有请求
JackDLin 2013-09-06
  • 打赏
  • 举报
回复
引用 6 楼 zhongxianyao 的回复:
你的项目名该不会是叫“web”吧
项目名是叫web 这个项目名有关?
编程点滴 2013-09-06
  • 打赏
  • 举报
回复
你的项目名该不会是叫“web”吧
JackDLin 2013-09-06
  • 打赏
  • 举报
回复
引用 4 楼 ch656409110 的回复:
/web/user/* 只会拦截user下面所有的请求
我是用SSH框架开发的系统 http://127.0.0.1:8080/web/user.do?method=doIndex 所以要用以上的方式来进入打开页面,同样是跳转到user/index.jsp <forward name="index" path="/web/user/index.jsp"></forward>
  • 打赏
  • 举报
回复
/web/user/* 只会拦截user下面所有的请求

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧