如何实现多帐号同时登陆一个网站?????????????????????????? 本帖最后由 fdh120 于 2011-03-25 10:45:20 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Session存多个principal,然后在后台自动给每个页面都生成一个inpput hidden,放的就是指定principal的id,然后根据这个值在页面加载时修改当前的User我的思路是这样的,所有的功能都继承于BasePage 然后在后台自动给每个页面都生成一个inpput hidden这个值是在登陆成功后就得到了,在BasePage有个属性专门记载当前是哪个principal,在加载完页面后就把这个值通过后台写在页面上,以后每次页面加载都是根据页面的这个值和BasePage那个专门记载目前是哪个用户的值来判断,如果页面上存在标志,比如我前面说到的inpput hidden,就以这个为准,否则就以是当前BasePage中记录的当前principal为准说的比较乱。 首先要知道原理,通常web系统的账号是存session或cookie的,如果要客户端同时登陆几个账号,那必须用数组或集合存储这些账号信息,也就是用session或cookie数组存储账号 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了 当然上面写的还是简单了,你还需要判断是否用户已经退出了,即Session["Now_Principal_List"]是否还包含当前ViewState["Now_Principal_Key"]对应的Principal了等等,上面都是即时在这里写的,经不起考验的,没经过验证 服务器与客户端使用不同的SessionID对话,记录下这些ID,按需替换并Psot给服务器就可以 需求:同一浏览器实现多用户登录同一网站用户可以相互切换,且每个用户可以单独退出,不影响其它用户,没有退出的用户仍然可以操作,如果多用户同时登录了系统,当前只可能有一个帐号是处一激活状态(自动选中最后激活的用户)。设计:session+cookie+java(spring3.2)+jquery 详情:http://www.cnblogs.com/interdrp/archive/2013/02/04/2891396.html 如何用编码清除SSL状态? gridview寻找控件方法 两个站点之间如和实现数据部分共享(单向)? 简单asp.net页面发布失败 ajax问题 页面跳转无效的问题,请出现过类似情况的速来帮忙。谢谢 请教如何取得一个dll的classid值 我缓存了一个用户控件,在缓存期间我怎样才能访问到它的实例. 求助:vs2008中选中td后属性栏中没有style是什么原因 @@@@@@ 谁知道 @@@@@@@@@ asp.net中<authentication>与<authorization>来控制用户对网页的访问 分隔字符串的问题
这个值是在登陆成功后就得到了,在BasePage有个属性专门记载当前是哪个principal,在加载完页面后就把这个值通过后台写在页面上,以后每次页面加载都是根据页面的这个值和BasePage那个专门记载目前是哪个用户的值来判断,如果页面上存在标志,比如我前面说到的inpput hidden,就以这个为准,否则就以是当前BasePage中记录的当前principal为准说的比较乱
。
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了