例如:
- 我们正在两个域上运行两个社区站点(称它们为
example.com
and example.net
).
- 我们希望以后能够将其扩展到更多领域。
- 我们希望允许多种类型的登录(OpenID、Facebook、Twitter、标准用户名/密码)。
- 我们希望登录一个站点的人能够自动登录其他站点。
换句话说,它有点类似于 StackExchange 网络。
既然如此,这个计划能行得通吗?
- Set up
example.com
and example.net
(以及任何后续添加)作为 OpenID 依赖方,接受 OpenID 登录id.example.org
only.
- Set up
example.com
and example.net
在您第一次访问它们时执行 OpenID 立即回复请求,这样如果您登录id.example.org
您会立即自动登录到您正在访问的网站。如果您未登录,他们应该设置一个 cookie,以保存他们在每个页面请求上执行此操作。
- Set up
id.example.org
作为 OpenID 提供者和消费者。它还应该使用 Facebook 和其他身份提供商,并允许标准用户名/密码访问。 (一个帐户可以附加多种登录方式。)
- 注销时,只需更改数据库中的身份验证令牌即可。用户仍然会拥有 cookie,但它们毫无意义。因此,用户可以同时从所有站点注销。可以一次针对一个用户存储多个身份验证令牌(并且每个站点应该不同),以便用户可以在一个浏览器中注销,但仍可以在另一个浏览器中登录。注销时始终会注销所有网站。
我在上面看到的唯一问题是:
- 有人来访
example.com
。设置“未登录”cookie。
- Zie 然后继续
example.net
. Ditto.
- 然后 Zie 登录并继续浏览
example.net
.
- Zie 然后回到
example.com
并且,由于“未登录”cookie,不会对其进行检查id.example.org
因此未登录。
- 但是,一旦 zie 单击“登录”按钮,zie 就会登录。
我认为这不是一个大问题。
总的来说,我认为这是一个非常好的系统。我只是想看看它的评论。有什么问题是我没有预见到的吗?会不会有问题或者很慢? StackExchange 使用一种非常不同的方法。我认为他们这样做有充分的理由吗?
总体而言,您的设置看起来不错。希望您已经了解了如何处理会话过期/超时。
我看到的唯一问题(而且更不方便)是需要明确单击“登录”。就我个人而言,我更喜欢自动登录(例如 Google、MS 和许多其他主要网站)。
SO 会检测您是否具有有效的登录名并显示一条消息,要求刷新页面。虽然有点烦人,但它至少仍然告诉我我已经登录了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)