我有一个不需要任何具体答案的问题,只是一个大致的方向。我为一家拥有许多网站的公司工作。每个站点都需要在某些时候登录。我们有一个所有网站都访问的单一帐户数据库。
登录系统的要求之一是,如果我们在一个站点上登录,我们应该在其他地方自动登录。
它现在的工作方式是在我们的任何站点(比如 site1.com)的页面加载(或初始化,忘记哪个)时,它重定向到一个“主”站点(比如 sitemaster.com)。在 sitemaster.com 上有一个网络服务,用于检查 sitemaster.com 上是否存在该用户的 cookie。如果是,它会重定向回来并让 site1.com 知道用户已经登录(site1.com 然后为 site1.com 创建一个 cookie,因此我们以后不必重定向到 sitemaster.com)。如果用户没有在 sitemaster.com 登录,site1.com 将要求用户登录,并在提交时将用户重定向到登录他们的 sitemaster.com,在 sitemaster.com 域下创建一个 cookie,重定向返回 site1.com 并让 site1.com 知道用户已登录(然后为 site1.com 创建 cookie)。
在注销时采用类似的方法。
这是处理通用登录或跨多个站点自动登录的最佳方式吗?有没有更好的做事方式?
一些要求:
- 我们的大多数网站都使用 .NET 2.0,但我们计划将它们全部更新到 .NET 4.0。我们想要这个自动登录系统的最佳方法,所以如果需要.NET 4.0,那没关系。
- 该解决方案不应需要 javascript(我们当前的解决方案在登录过程中需要 javascript)。
- 该解决方案不应需要 Flash。
- 可以使用 iframe,只要不需要 javascript。
- 我们希望能够在不刷新站点的情况下进行 AJAX 登录(使用 jQuery)。由于重定向,当前的解决方案阻止我们这样做。(例如:弹出一个模态框,要求用户登录,当他们登录时,模态框消失并更改了一些内容,但不需要刷新站点)。这不是绝对必要的,但至少我们应该能够在任何重定向发生之前使用 AJAX 验证登录。
任何文章或建议都会非常有帮助。我还有一些与跨站点重用自动登录代码的最佳方式相关的问题(从 ASP.NET 2.0 表单到 ASP.NET 4.0 MVC,但我将其留作另一个问题)。
巴拉