我的登录页面login.aspx:
。。
void DoLogin(Object objSender, EventArgs objArgs)
  {
      if (用户名和密码正确)
       {
        FormsAuthentication.SetAuthCookie(strUsr,false);
        Response.Write("<script>window.open('A.aspx')</script>");
        }
   }现在点击登陆按钮执行DoLogin()函数,本来应该新开一个浏览器窗口A.aspx,结果还是回到了login.aspx,这个问题困绕了很久了,如果采用不开新窗口的函数Response.Redirect("A.aspx"),那就会打开正常的A.aspx网页(在本窗口显示),显然开不开新浏览器窗口是问题的关键。
这几天研究cookie身份验证的问题,发现该cookie验证只在本窗口有效,离开的本浏览器窗口就失效,可能问题就出在这里,但我的程序一定要开新窗口,我试着将FormsAuthentication.SetAuthCookie(strUsr,false)这句改成FormsAuthentication.SetAuthCookie(strUsr,true),也就是设置cookie验证永远有效,就解决了问题,但这样总不太好,有没有什么办法解决这个问题呢?
高手们,请帮帮忙!!!

解决方案 »

  1.   

    改用模态窗口试试~~  window.showModalDialog('A.aspx');
      

  2.   

    高人!万分感谢!
    在给分之前还想弄明白:这是为什么呢?难道模态窗口就可以继承用户验证cookie?
      

  3.   

    to eddieOO5:
       还是有问题,打开模态窗口后,SessionID都变了,说明cookie问题还是没解决,因此遇到了新问题:
      我的A.aspx里面有个TextBox和一个“提交”按钮,先在TextBox里面输入一个值,然后点按钮,在按钮的事件处理程序中按照这个值来更新一个数据库表,问题是点按钮之后,还是回到了login.aspx!!!看来使用模态窗口只是回避了问题而没有解决问题!
      

  4.   

    你不指定永久cookies,设置你的Cookies的过期时间就行
      

  5.   

    楼上:我当然不会指定永久cookies,至于cookie的过期时间设置问题,我的程序不会有这个问题,是按照标准的30分钟设置的,肯定是新开的窗口无法继承cookies,我对这方面不熟悉,看了论坛上也没有人提出过类似问题,可能就不该采取开新窗口的办法吧。