【问题标题】:Shared User Session for Multiple ASP.NET Websites多个 ASP.NET 网站的共享用户会话
【发布时间】:2010-03-18 17:34:15
【问题描述】:

我的任务是开发一个用户也可以登录的登录和仪表板页面,然后根据存储在我们数据库中的一些角色,向用户显示他们有权访问的所有系统(我们开发的)。

如果他们登录,我们也希望将“用户会话”(不确定术语是否正确)传送到他们被重定向到的任何系统。

为了说明我想要实现的目标的一个非常粗略的概述:

alt text http://www.pcbg.co.za/attachment.php?attachmentid=12165&d=1268903524

有没有一种方法可以让用户登录一个站点,然后将该登录名转移到其他站点?

帮助、建议、链接将不胜感激。

对不起,我在 ASP.net 方面没有经验,但对 Silverlight、C#、WPF 有很好的了解。

提前致谢。

【问题讨论】:

  • 我已经看到了你所有的答案。感谢您的回复,我会尽快阅读并报告。

标签: c# asp.net security


【解决方案1】:

您可以使用单点登录的概念。您可以将会话数据管理为 out-proc,即在 SQL 服务器或状态服务器中。这里有几个链接可以为您提供一些指导:

  1. ASP Allaince
  2. MSDN

编辑:Alo 看看SO 中的这个问题:

【讨论】:

    【解决方案2】:

    我会使用的一种方法是实现自己的身份验证系统 - 几乎就像 ASP.NET 1.x 时代一样。但是,诀窍是您使用身份验证 cookie 为每个域(URL 的主机部分)建立一个 cookie。

    如果所有这些系统都在同一台服务器上运行,我相信您将能够使用所有 FormsAuthentication 方法和 Membership API。如果它们不是[编辑:托管在同一台服务器上],则确保它们配置为使用相同的密钥加密身份验证 cookie。这一点的实施将取决于您需要做的里程......

    需要注意的一点是,您也可以设置只向浏览器发送一个 cookie,但由所有应用程序共享。假设您有以下 URL:

    1. dashboard.com
    2. myapp1.dashboard.com
    3. myapp2.dashboard.com
    4. myapp3.dashboard.com

    为域“dashboard.com”设置一个 cookie 将向所有其他域发送和共享相同的 cookie。

    其他发帖人描述的共享会话状态将不起作用。会话变量在服务器上的工作方式是在服务器上为您的数据存储生成一个唯一密钥(无论介质是:in proc、out of proc、SQL server)。该唯一密钥存储在 cookie 中,并作为主机部分发送到您的浏览器。

    我希望这能让您对如何解决您正在制作的单点登录解决方案有所了解。

    【讨论】:

      【解决方案3】:

      一种方法是使用 ASP.NET 提供的会话状态服务。基本上,一旦用户登录,该会话就可以存储在一个单独的进程中(而不是 aspnet_wp 的一部分)。您的所有应用程序都需要进行修改才能转到该机器以获取用户身份验证状态。在 Google/MSDN 中搜索会话管理技术。

      【讨论】:

        猜你喜欢
        • 2011-08-30
        • 2017-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多