日期:2014-05-17  浏览次数:20397 次

如何实现一个客户端多用户登录呀?
也就是说n个人用一台电脑登陆一个web管理系统,怎么保存登陆者信息呢。

放session里不行,发现前边的登陆者刷新后总是取的最后一个人的登录信息。

大家可以测试下这个代码。

C# code

public partial class Test_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {      
            this.Session["LoginUser"] = DateTime.Now;      
        }       
    }

    //读取session
    //显示登录人的时间,其实不然,显示的却是最后一个用户登录的时间。
    //请打开多个浏览器器测试下。
    protected void Button2_Click(object sender, EventArgs e)
    {
        this.Response.Write(this.Session["LoginUser"].ToString());

    }
}



————————————————————————————————
我放cookie里也是碰见类似的问题。

即使cookie的键值不同也会导致这样的问题,

因为客户端取时无法判断键值,因此也会出问题。

具体代码太长就不贴出来了。

——————————————————————————————

请教下,有哪位高人做过类似的一个客户端多用户登录的功能呀

------解决方案--------------------
帮顶
------解决方案--------------------
基于.NET的模拟多用户客户端的设计与实现http://www.soft6.com/tech/3/36776.html
------解决方案--------------------
基于 cookie 会话管理的需要浏览器支持不同浏览器进程使用不同的cookie

目前,应该只有 IE 8 有这个特性,其他包括 Chrome FF Opera 都是多个浏览器进程共享 cookie 的,

IE8中用 File > New Session 打开的 IE 窗口 与 直接打开 IE 或者 File > New Window 或者 New tab 出来的不共享 cookie,后两者是共享cookie的
------解决方案--------------------
能直接实现你的需求,并支持多个浏览器,是:
不用 cookie 存储会话信息(注意 asp.net session 默认用 cookie 的),而用 cookieless,将会话信息附加到 url ,但 url 有长度限制,不能存太多信息

另一个方法是,要求用户使用多种浏览器
比如用户 A 用IE,用户B用Chrome 用户C用 FF
------解决方案--------------------

ding