3

我在 Win2008R2 IIS7 上有两个 ASP.NET 4.0 站点,例如 demo1.site.domain.com 和 demo2.site.domain.com,我想要单点登录。我已经四处搜索并像这样配置了两个站点的 web.config

<machineKey validationKey="ABCDEFG" decryptionKey="HIJKLMN" validation="SHA1" />

<roleManager defaultProvider="RoleName">
  <providers>
    <add name="RoleName" type="Assembly.RoleProvider, Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a1b2c3d4e5f6g7h8i9" />
  </providers>
</roleManager>

<membership defaultProvider="MembershipName">
  <providers>
    <add name="MembershipName" type="Assembly.MembershipProvider, Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a1b2c3d4e5f6g7h8i9" />
  </providers>
</membership>
<authentication mode="Forms">
  <forms 
    loginUrl="http://demo1.site.domain.com/login.aspx" 
    name=".ASPXAUTH"
    domain="domain.com"
    protection="All"  
    path="/"        
  />
</authentication>

<authorization>
  <deny users="?" />
</authorization>

换句话说,机器密钥在两个网站上是相同的,并且成员资格/角色提供者存在于第一个站点的集合中并由第二个站点使用。

我遇到的问题是它不起作用。我使用 fiddler 来查看发生了什么,并且 auth cookie 永远不会发送到第二个站点,因此它总是重定向到登录页面。

我错过了一些明显的东西吗?

谢谢,尼克

4

1 回答 1

2

我认为您在身份验证配置中设置了错误的域 - 它应该是“domain.com”(这可能是一个错字,但值得检查)。

您可能想查看以下有关跨子域共享 cookie 的博客:

http://www.codeguru.com/csharp/csharp/cs_internet/article.php/c19417/Sharing-Cookies-Across-Domains.htm

于 2012-06-15T08:19:40.270 回答