我网站的登陆处理cookie代码:
FormsAuthentication.SetAuthCookie(userName, true);
HttpCookie cookie = new HttpCookie("login");
cookie.Values.Add("name", userName);
cookie.Expires = DateTime.Now.AddDays(30);
System.Web.HttpContext.Current.Response.AppendCookie(cookie);然后我现在判断用户是否登陆的代码是:
//如果网站没有登陆。
if (System.Web.HttpContext.Current.Request.IsAuthenticated == false)
{
}
现在的问题是,这样只能判断用户自己是不是登陆,我想要让任何用户都可以看到别的用户是否在线,该用什么代码来判断?

解决方案 »

  1.   

    只是应用cookie的话不太可能吧.
      

  2.   

    这样
    你用Session保存登录的用户
    然后每隔20分钟刷新一下
    看下用户是否在线
      

  3.   

    可以用MemberShip类来统计实现 更简单
      

  4.   

    在你的用户表中添加一个字段“lastActive”记录用户最后的活跃时间(每次用户登录、打开网页、等任何操作都更新该字段)
    然后生成一个视图,按20分钟内活跃的用户为在线用户作为条件,筛选出用户
    这个视图就是在线用户名单列表
    然后下面的步骤你就会怎么做了把
      

  5.   


    谢谢,我想问下,这样就需要经常的读写数据库 和session相比哪个对服务器的负荷比较大?
      

  6.   

    同session 统计
    参考
    http://www.cnblogs.com/kokoliu/archive/2008/01/25/618140.html
    http://www.cnblogs.com/kokoliu/archive/2007/01/11/618144.html
      

  7.   

    用户表给个状态
    登录了后把该状态改为true,退出或者注销改为false
    定时检查一下
      

  8.   


    看你的数据库服务器,web服务器硬件配置如何了,
    基本上,数据操作每次用户登录都要进行数据更新,可以通过建索引的方式加快操作,主要负载加到了数据库服务器上
    而session的方式,主要负载是在Web服务器。
    相比而言,session的方式相对系统负载要大一些。因为数据库可以通过cache的方式
    不必次次进行实时计算统计,而session的方式则基本每次都需要。
      

  9.   

    要在服务器端把当前登陆的用户保存起来才可以。
    方法么 你可以存在Application变量里面 也可以存在数据库里面。