我是在学习用C#开发.NET网站,正在做登录程序。
我这样做:用户登录成功后,同时创建session和cookie(当然cookie是在用户选择保留登录状态的情况下才创建),测试下来,session和cookie创建均成功,并且session变量在个人中心页面的程序调用中都完全正常。
关于cookie,我只是创建好,然后通过Response.write来输出获取的cookie各项值,显示是正确。
怎样做才能像百度和CSDN那样,如果你登录时选择保留登录状态,以后,无论你从哪个页面进入都会显示你的登录状态,应该是自动登录的。
1、是不是只要读取到cookie不为空就自动登录呢?还是要再次到数据库核对用户名和密码是否吻合才自动登录?我觉得如果是查数据库来核对好像是画蛇添足了吧。
2、如何用cookie自动登录呢?最好是提供一个示例。真心谢谢各位了!

解决方案 »

  1.   

    1.cookie个人感觉只需读一次,并在服务器生成相应的session,页面应该先判断session再判断cookie
    2.cookie应该到服务器验证,最好能加密
      

  2.   

    我是这样理解你的问题的:
    1、你使用session和cookie两种机制来保留你的登录信息,首先你要明白他们的区别
    session是在服务器上登记的,而cookie是客户机上登记的,你要解决的问题是如果用户选择保留登录状态后,下次就不用登录或者说自动登录,当然cookie你也可以让用户去选择它的生命周期2、在明确了你的问题后,我们要明确 session 是你用于验证系统的标识,而cookie是将来再次登陆的凭证
    3、所以用户选择保留登录状态后你就把登录信息存储到了cookie中,这时你就可以不用管cookie了,你去判断session就好了,当session超期或者销毁后,用户再次访问系统是 cookie 就有用了,明确地说这时cookie是生产session的凭证了。你判断session没有了,就用cookie去检测数据是否合法,然后生产session,整个系统的验证全部是用session作判断条件的,这样说,不知道你是否能够明白!
      

  3.   

    谢谢各位师兄的帮忙啊,特别是newbj2008大哥,我总算是弄明白许多了。我写了下面这个函数,刚刚测试,成功了,呵呵,很高兴,各位大哥的功劳啊。这个函数我是放在if(!Page.IsPostBack)中执行的。  //写一个读取cookie自动登录的函数
        public void cookie_logon()
        {
            if (Session["flag"] == null)
            {
                if (Request.Cookies["mycookie"] != null)
                {
                    Session["flag"] = true;
                    Session["sessionName"] = Request.Cookies["mycookie"].Values["name"].ToString();
                    Session["sessionID"] = Request.Cookies["mycookie"].Values["ID"].ToString();
                }        
            }
        }我还想请教一下大家,虽然是成功了,但是很麻烦的问题是,要想像百度和CSDN这样,无论你打开哪个页面都能自动登录,如果是每个页面都加上面这段代码,那是很烦人的事情,有没有一种方法,写在一个什么地方,让全站的每个页面都能调用呢?我试了试在类中创建函数行不通啊。请大家帮一嘛,我是自学的,没有基础啊,谢了!