日期:2014-05-17  浏览次数:20626 次

求答疑:Struts2 登录拦截器的一个疑问
在校学生求答疑

我看到网上一般的教程登录拦截器都是这样写的

Map map = arg0.getInvocationContext().getSession();
if (null == map.get("username"))
return Action.LOGIN;


我想求教,如果我另外写了个程序,将session中的username置为一个确定的用户名,是不是就跳过登录拦截就可以进去了?

拦截器是不是需要做数据库用户名和密码的匹配?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

是的 就是这样

啊?那怎么办?在拦截器里做用户名和密码的验证?不行吧...

一般都登入了才把username放到session里啊。
没登入session当然是空的
所以基本都是这样验证的 没什么问题

讲的就是恶意登录啊,就是说,如果这样的话就是有漏洞了,别人就可以绕过我的登录页进去了...
难道正式项目也都是这么做的?不可能吧...

一般的正式项目,每一个请求都要经过Action的拦截器,页面全在WEB-INF下放着,所以一般安全性没什么问题,你说的恶意登陆情况如果发生,那就是struts2的官方BUG了。

也就是说,除了login.jsp之外,全部放在WEB-INF下面经过action跳转进入?

login.jsp也在WEB-INF下。每一个请求都要经过拦截器过滤,明白吧,哪怕什么都不做,也要经过Action跳转到某jsp,这样才足够安全。