请教一个问题:
有三个r1.jsp和r2.jsp、r3.jsp。r1.jsp为用户登录界面。当用户名和密码正确时执行r3.jsp页面,r2.jsp为验证r1.jsp的页面。在r2.jsp里我用了session.setAttibute("user",a),session.setAttibute("pass",b)得到其值,这样就可避免用户直接登录r3.jsp,可问题是当第一次登录浏览器时好像是成功阻止了,可当我任意输入一个用户名时通过IE浏览器时却成功登录r3.jsp了,
请问各位有没有什么办法能阻止用户登录,也就是说必须在成功登录后才能进入r3.jsp(不能直接在IE浏览器上直接输入),小弟先谢了

解决方案 »

  1.   

    http://community.csdn.net/Expert/TopicView.asp?id=5299968
      

  2.   

    我没那些什么等级访问权限之类的,只是简单的判断,最好在JSP中
    各位帮帮忙哈,急的
      

  3.   

    dopost是什么意思,小弟不明白哈,我可是新手哈,给完整点好吗
      

  4.   

    你在2.jsp上做登录验证的时候,如果用户登录成功,则放进session里面一个值,或者干脆把用户个人信息封装成一个对象放进去,这样在3.jsp上你先判断session里面是否存在这个变量,如果存在,说明这个用户已经登录,否则说明这个用户没有登录,将页面跳转到错误提示页面,或者跳到登录页面什么的就随你了。
    注意,是当用户登录成功之后才放进session哦,如果你先放,那就和你现在这样了,只要用户输入点什么东西就可以随意登录网页了
      

  5.   

    在r3.jsp中加上这么几句
    String name=(String)session.getAttribute("user");
    String pass=(String)session.getAttribute("pass");
    //当然具体怎么验证,你自己看着办,这样就可以防止别人直接访问此页面了
    if(name==null||pass==null){
       response.sendRedirect("r1.jsp");验证失败转向登录页面重新登录
    }
    但你要在r3.jsp里弄个退出按钮,用以删除session,否则登录过一次当然下次就通过了
    肯研究就肯定会进步,好好学习吧
      

  6.   

    那个是SQL注入。2个方法解决:
    1是先得到name然后去数据库里select出来再equals。
    2是用PreparedStatement来执行SQL就不能SQL注入了。