新足迹

 找回密码
 注册

精华好帖回顾

· 皖南旧韵(圖文) (2008-9-22) 着我青衣永飘零 · 豆浆蛋糕(香叶版) (2006-12-4) poloand
· 灌汤小笼包 -- 详细图解做法 (2007-9-24) datou2z · 《半月谈》 我的历史观 (2011-9-14) pink_maomao
Advertisement
Advertisement
查看: 3971|回复: 65

多重登录问题 [复制链接]

2010年度奖章获得者

发表于 2011-5-30 23:59 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
今天跟一人聊时,有一个有趣的话题。

说是他们需要一个可以多个ID同时登录的功能。
比如说一个tab 是以用户A登录,另一个tab 是以用户B登录。 打开新浏览器 以用户C登录。 (一个用户log off 也不会影响到其他用户)

这样的操作方式好不好暂且不说。 我以前最爱用的那几种login模式肯定就废掉了。我不相信答案是我最厌恶的那一种模式。

所以,大家有什么好的建议没?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2011-5-31 08:51 |显示全部楼层
此文章由 jerryinau 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jerryinau 所有!转贴必须注明作者、出处和本声明,并保持内容完整
每次登录自己生成session id,然后实现自己的认证逻辑

发表于 2011-5-31 09:07 |显示全部楼层
此文章由 本地人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 本地人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
IE8有个“new session”功能,但我从来没用过,不知道合不合适。

要不就用户A:IE,用户B:Firefox,用户C:Chrome, 用户D:Opera,用户E:Safari等

发表于 2011-5-31 09:58 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果用户不logout,直接关闭一个tab然后新开一个tab登陆他们网站, 那他是a, b还是c?

发表于 2011-5-31 10:14 |显示全部楼层
此文章由 NoChoice 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 NoChoice 所有!转贴必须注明作者、出处和本声明,并保持内容完整
可以把session写到url里面,比如
http://www.youdomain.com/sessionid/....
这样不同的tab登陆后会生成不同的sessionid以便区分

2010年度奖章获得者

发表于 2011-5-31 10:23 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2011-5-31 09:58 发表
如果用户不logout,直接关闭一个tab然后新开一个tab登陆他们网站, 那他是a, b还是c?

问得好啊。。。我回答不了。。。。估摸这,新tab应该没有登陆?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2011-5-31 10:24 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原来的browser没法做,从技术上来说,一个browser的cookie决定它的session,而不同的window/tab共享cookie,唯一可行的是用不同的browser.

现在大多browser一个tab就是一个process,分得很开,从用户角度来说增加了很多privacy的feature,比如incognito(for chorome)

check it out

http://www.groovypost.com/howto/ ... -firefox-ie9-opera/

我很久前作过不同的测试,opera不允许2个以上,不知道现在这个bug fix了没有。

2010年度奖章获得者

发表于 2011-5-31 10:24 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 本地人 于 2011-5-31 09:07 发表
IE8有个“new session”功能,但我从来没用过,不知道合不合适。

要不就用户A:IE,用户B:Firefox,用户C:Chrome, 用户D:Opera,用户E:Safari等


肯定不是browser specific,用任何browser都可以。

前提是用同一个browser。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2011-5-31 10:28 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-5-31 10:24 发表
原来的browser没法做,从技术上来说,一个browser的cookie决定它的session,而不同的window/tab共享cookie,唯一可行的是用不同的browser.

现在大多browser一个tab就是一个process,分得很开,从用户角度来说增加了很多privacy ...


是啊,可人家要得就是同一个browser,打开tab。而且听这象是要老brwoser都支持。肯定不能用新feature。

我想就算用session,这也是cookie来得,都得共享啊。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2011-5-31 10:30 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 NoChoice 于 2011-5-31 10:14 发表
可以把session写到url里面,比如
http://www.youdomain.com/sessionid/....
这样不同的tab登陆后会生成不同的sessionid以便区分


这个好像有点对路。 大家看看这个可行吗?

安全性问题就不要考虑了,这个做法本来就不安全。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-5-31 10:30 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果不用考虑关闭再打开的问题。 我这里一个笨办法, master page或者base page+Viewstate, security要求高的话把viewstate加密。
Advertisement
Advertisement

发表于 2011-5-31 10:31 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-5-31 10:28 发表


是啊,可人家要得就是同一个browser,打开tab。而且听这象是要老brwoser都支持。肯定不能用新feature。

我想就算用session,这也是cookie来得,都得共享啊。


老的browser一定不行,给他们装新browser吧

2010年度奖章获得者

发表于 2011-5-31 10:32 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2011-5-31 10:30 发表
如果不用考虑关闭再打开的问题。 我这里一个笨办法, master page或者base page+Viewstate, security要求高的话把viewstate加密。

这个思路有点象, 吧sessionid加在url上,是不是?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-5-31 10:36 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
一样的, 换汤不换药

发表于 2011-5-31 10:37 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-5-31 10:30 发表


这个好像有点对路。 大家看看这个可行吗?

安全性问题就不要考虑了,这个做法本来就不安全。


这是在cookie disable掉了之后 server side framework的work around,只要cookie还在,sessionid就上不了url,除非你手工上,那工作量就难以想象。

而且我觉得这只是一个feature,nice to have but not essential,不要因为这个无理的要求break掉你的app,不值得。

2010年度奖章获得者

发表于 2011-5-31 10:38 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
session我用得不多,想问一下。
一个新的login session产生后,难道不会吧前一个session 给覆盖掉得吗??
Advertisement
Advertisement

发表于 2011-5-31 10:41 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-5-31 10:38 发表
session我用得不多,想问一下。
一个新的login session产生后,难道不会吧前一个session 给覆盖掉得吗??


原来是这样,现在如果用incognito mode就会用不同的cookie storage,存在不同的地方,不会相互影响,这是它的实现原理

2010年度奖章获得者

发表于 2011-5-31 10:41 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-5-31 10:37 发表


这是在cookie disable掉了之后 server side framework的work around,只要cookie还在,sessionid就上不了url,除非你手工上,那工作量就难以想象。

而且我觉得这只是一个feature,nice to have but not essential,不要因为这个无理的要求break掉你的app,不值得。


就是啊大哥,为了这个feature,他们吧我以前做得app改得面目全非了。 他说用得是session
我只是好奇,这个session可行吗?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2011-5-31 10:43 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-5-31 10:41 发表


原来是这样,现在如果用incognito mode就会用不同的cookie storage,存在不同的地方,不会相互影响,这是它的实现原理

大哥,别提incognito好不。 他们说得就是普通browser mode。
你觉得普通browser可行吗?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-5-31 10:45 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-5-31 10:41 发表


就是啊大哥,为了这个feature,他们吧我以前做得app改得面目全非了。 他说用得是session
我只是好奇,这个session可行吗?


告诉他们session倒底是什么由什么决定的。

server side code不应该动,让他们升级browser,这是最经济/快速的方法。

发表于 2011-5-31 10:50 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
webserver 的 session handler 行不通的

自己写个custom session handler就可以。不难的,用unique id。

uniqueid 在url或form都行

但是clusted webserver就困难了。
Advertisement
Advertisement

发表于 2011-5-31 10:51 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-5-31 10:43 发表

大哥,别提incognito好不。 他们说得就是普通browser mode。
你觉得普通browser可行吗?


我觉得肯定不行,如果他们非要坚持(但我的确看不出这样做的理由),你可能必须改你的server side app,这基本上是下下策了。

不过我觉得你要push back,坚决说“No”, 人们有时候需要些professional给的education的,除非他们事先不懂incognito这个feature。

如果这个assignment还有其他非技术层面的因素,比如politics,我就不好说了,当然越复杂越好,大家都开心.

2010年度奖章获得者

发表于 2011-5-31 10:52 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你得看法就是,这个功能除了用incognito,是无法完美得用老技术实现得。

是不是这个说法?

2010年度奖章获得者

发表于 2011-5-31 10:55 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-5-31 10:51 发表


我觉得肯定不行,如果他们非要坚持(但我的确看不出这样做的理由),你可能必须改你的server side app,这基本上是下下策了。

不过我觉得你要push back,坚决说“No”, 人们有时候需要些professional给的education的,除非他们 ...


还好不是要我做,他就是特自豪得跟我聊,他们如何吧我以前做得app 改成支持多重登陆模式了。。。。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-5-31 10:58 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 porcorosso 于 2011-5-31 10:50 发表
webserver 的 session handler 行不通的

自己写个custom session handler就可以。不难的,用unique id。

uniqueid 在url或form都行

但是clusted webserver就困难了。


不知道PHP那边如何,但.net这边挺难的,要写optimized httpmodule, 作一个自己的pipeline的plugin,还要写一个自己的windows service来做storage,在不同的阶段read/write....

基本上把asp.net infustructure要自己实现1/10功能,还要测试,这可能不仅仅是工作量的问题,还有developer素质问题,前提太多了。。。

发表于 2011-5-31 10:59 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-5-31 10:52 发表
你得看法就是,这个功能除了用incognito,是无法完美得用老技术实现得。

是不是这个说法?


老技术可以实现,但成本太高,what's the point of re-invent wheel?
Advertisement
Advertisement

发表于 2011-5-31 11:30 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-5-31 10:58 发表


不知道PHP那边如何,但.net这边挺难的,要写optimized httpmodule, 作一个自己的pipeline的plugin,还要写一个自己的windows service来做storage,在不同的阶段read/write....

基本上把asp.net infustructure要自己实现1/ ...


hehe 期待KR2000来支持我一把

发表于 2011-5-31 11:32 |显示全部楼层
此文章由 fyang1024 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fyang1024 所有!转贴必须注明作者、出处和本声明,并保持内容完整
要做到LZ提的要求,server端必须能区分请求是从不同的tab发出来的,除非browser会把tab的信息传给server,否则是做不到的。
session id用来标识一个浏览器和server的会话,不同的tab与同一个domain共享一个会话,浏览器都是这么设计的。把sessionid放在URL或session cookie里传给server没有本质区别。
浏览器必须传一个tabid给server,目前的浏览器没有这么做的。
浏览器如果愿意,可以把tab对应的proccess id或者thread id作为tabid。

发表于 2011-5-31 11:57 |显示全部楼层
此文章由 pop3 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pop3 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2011-5-31 09:58 发表
如果用户不logout,直接关闭一个tab然后新开一个tab登陆他们网站, 那他是a, b还是c?


我用CHROME,用三个不同的ID登录GMAIL,然后直接关掉中间登录的TAB,再打开一个新TAB,登录GMAIL,发现是用最后一个ID自动登录。所以我觉得你这个问题的答案是C。

特殊贡献奖章

发表于 2011-5-31 12:00 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我觉得把uniqueid放在url和session里面是可行的,根据这个uniqueid来判断用户是谁,是否登录
比如userid是2000,运行xxx?userid=2000,如果SESSION['user_2000']=true,就可以继续,不行就让user登录,然后更新session.

但我觉得这个功能真的是无聊透顶了,我是死都不会做的

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部