为了防止用户多次登录,想通过一个在会话期间存在的Cookie值log来实现。首次登录时将该Cookie的值设为"Yes". 在登录首页中通过判断客户端Cookie中是否有log的值,且值是否为"Yes"来判断用户是否已经登录,是则转去登录后的首页,否则要求用户输入用户名与密码。
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            HttpCookie ck= Request.Cookies["log"];
            if (ck != null && ck.Value.Equals("Yes"))
            {
               Response.Redirect(要转去的页面的URL);
            }
        }    
        Session.Clear();
        txtUser.Focus();
    }  首次登录后保存Cookie的程序段:    Response.Cookies["log"].Value = "Yes";  //设置已登录标志
  //Response.Cookies["log"].Expires = DateTime.Now.AddDays(1);    若将保存时的有效期设置语句加上,则Cookie可以保存,但是不加时间的话,按资料上说应该在会话存续期间都是有效的,可是为什么不能保存呢?开始怀疑是IE的设置问题,可是将Internet选项->隐私->高级中选中覆盖,并接受所有的Cookie,且允许会话Cookie,之后重启了IE,但是依然无效。

解决方案 »

  1.   

    呵呵,自己搞明白了。并不是Cookie没有保存,而是会话Cookie是不能跨Session被访问的,因为它只存在线程的内存里,没有保存到硬盘上,因此另开的一个浏览器窗口里(另一个线程)是不能读到这个Cookie的。看来我原来的思路是不对的。如果用一个有Expires的Cookie呢?那问题就演变为如何在用户关闭系统中的任何一个页面时都可清除Cookie了。
      

  2.   

    你要防止的那个功能。跟本不是用cookie做的。肯定是用服务器了。而Cookie完全是客户端。