15

例如:

  • 我们在两个域上运行两个社区站点(称它们为example.comexample.net)。
  • 我们希望以后能够将其扩展到更多域。
  • 我们希望允许多种类型的登录(OpenID、Facebook、Twitter、标准用户名/密码)。
  • 我们希望登录到一个站点的人自动登录到其他站点。

换句话说,它有点类似于 StackExchange 网络。

在这种情况下,这个计划会奏效吗?

  • 设置example.comexample.net(以及任何后续添加)作为 OpenID 依赖方,仅接受 OpenID 登录id.example.org
  • 设置example.comexample.net在您第一次访问它们时执行 OpenID 立即回复请求,这样如果您已登录,id.example.org您将立即并自动登录到您正在访问的站点。如果您没有登录,他们应该设置一个 cookie,以保存他们在每个页面请求上执行此操作。
  • 设置id.example.org为 OpenID 提供者和消费者。它还应该使用 Facebook 和其他身份提供商,并允许标准的用户名/密码访问。(多个登录方法可以附加到一个帐户。)
  • 注销时,只需更改数据库中的身份验证令牌。用户仍将拥有 cookie,但它们将毫无意义。因此,用户可以同时退出所有站点。一次可以针对一个用户存储多个身份验证令牌(并且每个站点应该不同),以便用户可以在一个浏览器中注销,但仍可以在另一个浏览器中登录。退出始终退出所有站点。

我在上面看到的唯一问题是:

  • 有人来访example.com。设置了“未登录”cookie。
  • 齐然后继续example.net。同上。
  • 然后 Zie 登录并继续浏览example.net
  • Zie 然后返回,example.com并且由于“未登录”cookie,未进行检查id.example.org,因此未登录。
  • 但是,只要 zie 单击“登录”按钮,zie 就会登录。

我不认为这是一个大问题。

总的来说,我认为这是一个非常好的系统。我只是想看看它被审查。有没有我没有预见到的问题?它会是错误的还是缓慢的?StackExchange 使用了一种非常不同的方法。我认为他们有充分的理由这样做?

4

1 回答 1

1

总体而言,您的设置看起来不错。希望您已经涵盖了处理会话到期/超时。

我看到的唯一问题(以及更多的不便)是需要明确单击“登录”。就个人而言,我更喜欢自动登录(如 Google、MS 和大量其他主要网站)。

SO 检测您是否有有效的登录名并显示一条消息,要求刷新页面。虽然有点烦人,但它至少仍然告诉我我已经登录了。

于 2011-07-03T02:39:31.843 回答