本帖最后由 fdh120 于 2011-03-25 10:45:20 编辑

解决方案 »

  1.   

    Session存多个principal,然后在后台自动给每个页面都生成一个inpput hidden,放的就是指定principal的id,然后根据这个值在页面加载时修改当前的User我的思路是这样的,所有的功能都继承于BasePage
      

  2.   

    然后在后台自动给每个页面都生成一个inpput hidden
    这个值是在登陆成功后就得到了,在BasePage有个属性专门记载当前是哪个principal,在加载完页面后就把这个值通过后台写在页面上,以后每次页面加载都是根据页面的这个值和BasePage那个专门记载目前是哪个用户的值来判断,如果页面上存在标志,比如我前面说到的inpput hidden,就以这个为准,否则就以是当前BasePage中记录的当前principal为准说的比较乱
      

  3.   

    首先要知道原理,通常web系统的账号是存session或cookie的,如果要客户端同时登陆几个账号,那必须用数组或集合存储这些账号信息,也就是用session或cookie数组存储账号
      

  4.   

    Dictionary<string, IPrincipal> dictionary;
    Session["Now_Principal_List"] = dictionary;
    在登录界面登陆成功后,生成一个Principal,判断这个principal是否在Session["Now_Principal_List"]里已经有了(一般根据用户管理号比较),如果没有,插入,生成key值,Session["Now_Principal_Key"]=key;否则提示在登录成功后转向的第一个页面,在Load事件里写
    if(!IsPostBack)
    {
       ViewState["Now_Principal_Key"] = Session["Now_Principal_Key"].ToString();
    }
    else
    {
       Session["Now_Principal_Key"]= ViewState["Now_Principal_Key"];
       this.User = ((Dictionary<string, IPrincipal>)Session["Now_Principal_List"])[ViewState["Now_Principal_Key"].ToString()];
    }这个User就是你当前页面的Principal了
      

  5.   

    当然上面写的还是简单了,你还需要判断是否用户已经退出了,即Session["Now_Principal_List"]是否还包含当前ViewState["Now_Principal_Key"]对应的Principal了等等,上面都是即时在这里写的,经不起考验的,没经过验证
      

  6.   

    服务器与客户端使用不同的SessionID对话,记录下这些ID,按需替换并Psot给服务器就可以
      

  7.   

     需求:同一浏览器实现多用户登录同一网站用户可以相互切换,且每个用户可以单独退出,不影响其它用户,没有退出的用户仍然可以操作,如果多用户同时登录了系统,当前只可能有一个帐号是处一激活状态(自动选中最后激活的用户)。设计:session+cookie+java(spring3.2)+jquery 详情:http://www.cnblogs.com/interdrp/archive/2013/02/04/2891396.html