如题,类似163的通行证方案说明:
各子模块域名: 模块名.mysite.cn
各子模块用不同语言开发,且不在同一台服务器上要求:
一次登录,全站通用
若用户长时间未动作,超时自动退出====
俺参考过一些开源项目,比如,JOSSO,Yale CAS,感觉都不太爽
俺倒是想到了一点,用Cookie
如果,对于Cookie的安全性又有点担忧
而且,用纯Cookie,则超时也好做
如果用Cookie+Session,感觉也不爽,邀请大家一块讨论...........
加QQ:147111542

解决方案 »

  1.   

    就是用Cookie,只是对Cookie加密。
    我的网站就是这样实现的,网易通行证也是这样。
      

  2.   

    请教楼上你看看163,在你登录在上面的时候,你选IE的工具栏,把Cookie清空,
    再在163上面跑一跑,结果是:仍然在线,清空Cookie讲没有让你注销
    也就是说,163用的并不是纯Cookie, 这点不重要Cookie我可以设它的过期时间,
    到了这个过期时间的时候,不管用户仍然在是活动状态也好,不是活动状态也好,它都会失效
    这样肯定不合适
    所以把Cookie保存在浏览器进程,则浏览器不关,它一直存在
    若用户己经是长时间未动用了,那怎样检测它超时?=========
    请教 tomuno(特别行动组) 
    联明帐户是咋回事?
    能不能详谈一点
      

  3.   

    我只是听以前网易的员工告诉我的,网易在2000年时就实现了联名帐户
    具体怎么实现的,我还不清楚
    相关技术有sso和saml
      

  4.   

    我以前就在网易工作的,网站部分使用的通行证系统没有你想象的那么复杂,用户登录网易通行证,就会在用户Cookie里写入用户名、手机号等一些信息,子应用都会使用提供的包来验证用户是否是登录状态并取出这些信息,这种检测在用户的每一个操作时都会进行的(因为使用Cookie,所以不会消耗很多的性能),如果Cookie超时或用户退出通行证,则Cookie清空,子应用当然就检测到用户已经退出,要么退出应用,要么提示用户重新登录通行证。
      

  5.   

    如果你不想用session,用cookie也是比较好的方案,不过要注意几点
    第一:你的cookie要加密,即用户不能通过模拟cookie就可以模拟每个用户的在线
    第二:要做一个模拟session的东西,,就是要建立一个客户端和用户端的东西,来管理用户cookie超时后的动作!
      

  6.   

    请教 laoer:=================
    Cookie我可以设它的过期时间,
    到了这个过期时间的时候,不管用户仍然在是活动状态也好,不是活动状态也好,它都会失效
    这样肯定不合适
    所以把Cookie保存在浏览器进程,则浏览器不关,它一直存在
    若用户己经是长时间未动用了,那怎样检测它超时?
    =================
      

  7.   

    对于Cookie的清除,要么,用户主动清除,比如点击退出,或关闭浏览器,要么超过Cookie写入时指定的时长,还有一种就是Cookie设定为用户关闭浏览器时清除,之后用户长时间不活动,这种情况下Cookie也可能会被清除。
    对于通行证系统,只要应用检测不到用户端的Cookie,就认为用户已经退出通行证。
    我不知道你要达到什么样的效果,一般来说登录通行证是会写一个时长的,这样开新的浏览器也会认为用户是登录状态的,当然要提醒用户为了保证安全,请在使用结束后退出通行证,一旦通行证签退,所有的应用都检测不到Cookie,当然也都退出了。
      

  8.   

    一个比较常见的实现Sign on one的手段是这样的:为所有支持的站点建立一个专门的证书服务器,为每个用户分配一个证书,站点根据证书来判断用户身份。
    需要身份验证时,根据用户的登陆数据在证书服务器获取相应的证书,并保存在用户的cookie中。
    这样在证书服务器保存用户数据,各站点需要时可以使用证书获取
      

  9.   

    to Polarislee, 
    yale CAS好像就是这个思想,不过,不是用cookie的我现在遇到的问题其实很简单
    可能是我说得太复杂我要的效果就是
    用cookie实现类似session的效果:
    只要用户在活动,cookie就有效
    关闭浏览器,或者用户在一段时间内(比如20分钟)未动作,cookie失效-------
    如果给cookie设了过期时间,那到了时间的时候,即使用户仍在活动,cookie还是会失效,这不是我想要的
      

  10.   

    很简单,在Cookie里加上最后活动时间,每次用户有动作时判断一下,如果最后活动时间和当前时间相差超过你规定的时间就认为用户超时,如果没有超时就重写用户最后活动时间为当前时间。
      

  11.   

    楼上说得有道理,给cookie加个timestamp。不过觉得把客户信息放在cookie里面实在是不太安全。
      

  12.   

    Cookie是客户端脚本,它不会主动地请求服务器,也不会被服务器监察得到。这就是他和Session的不同的地方。
    用户登陆-->更新在线-->客户端第隔几分钟主动地请求用户在线状态
    服务器端-->不在看用用户在不在线,
    这样当用户一定时间不活动后,,用户也不就能主动地请求用户在线状态,服务器就可以认为他不在线了。这个就模拟了Session