This Domain(Admin5.com) is for Sale:

JSP和Struts解决用户退出问题

时间:2007-10-22  来源:不详  作者:林子
 在一个有密码保护的Web应用中,正确处理用户退出过程并不仅仅只需调用HttpSession的invalidate()方法。现在大部分浏览器上都有后退和前进按钮,允许用户后退或前进到一个页面。如果在用户在退出一个Web应用后按了后退按钮浏览器把缓存中的页面呈现给用户,这会使用户产生疑惑,他们会开始担心他们的个人数据是否安全。许多Web应用强迫用户退出时关闭整个浏览器,这样,用户就无法点击后退按钮了。还有一些使用javascript,但在某些客户端浏览器这却不一定起作用。这些解决方案都很笨拙且不能保证在任一情况下100%有效,同时,它也要求用户有一定的操作经验。
  阻止未经认证访问受保护的JSP页面

  从form中获取用户提交的认证信息并经过验证后,登陆动作简单地往HttpSession对象中写入一个用户名,退出动作则做相反的工作,它从用户的HttpSession对象中删除用户名并调用invalidate()方法销毁HttpSession。为了使登陆和退出动作真正发挥作用,所有受保护的JSP页面都应该首先验证HttpSession中是否包含了用户名以确认当前用户是否已经登陆。如果HttpSession中包含了用户名,也就是说用户已经登陆,Web应用则将剩余的JSP页发送给浏览器,否则,JSP页将跳转到登陆页login.jsp。页面home.jsp,secure1.jsp,secure2.jsp和logout.jsp均包含清单3中的代码段: copyright dedecms

  Listing 3//...String userName =(String)session.getAttribute(User);if (null==userName) request.setAttribute(Error, Session has ended.Pleaselogin.); RequestDispatcher rd=request.getRequestDispatcher(login.jsp); rd.forward(request,response);//...//Allowthe rest of the dynamic content in this JSPto be served to thebrowser//...

  在这个代码段中,程序从HttpSession中减缩username字符串。如果字符串为空,Web应用则自动中止执行当前页面并跳转到登陆页,同时给出Sessionhasended. Please log in.的提示;如果不为空,Web应用则继续执行,也就是把剩余的页面提供给用户。

  运行logoutSampleJSP1

  运行logoutSampleJSP1将会出现如下几种情形:

  1) 如果用户没有登陆,Web应用将会正确中止受保护页面home.jsp,secure1.jsp,secure2.jsp和logout.jsp的执行,也就是说,假如用户在浏览器地址栏中直接敲入受保护JSP页的地址试图访问,Web应用将自动跳转到登陆页并提示Sessionhasended.Please log in.

  2) 同样的,当一个用户已经退出,Web应用也会正确中止受保护页面home.jsp,secure1.jsp,secure2.jsp和logout.jsp的执行

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息