4

我正在尝试将表单身份验证从根应用程序共享到在虚拟目录中运行的子应用程序。我在子站点中进行身份验证时遇到问题。

在父应用程序中,一切都按预期工作。

我有以下设置:

家长申请:

  • 网址http://localhost:1336/
  • <forms loginUrl="~/account/sign-in" protection="All" timeout="30" name=".MYAPPLICATION" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="true" defaultUrl="/" />

虚拟目录:

  • 网址http://localhost:1336/subsite
  • <forms loginUrl="/account/sign-in" protection="All" timeout="30" name=".MYAPPLICATION" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="true" defaultUrl="/" />

当我尝试时,http://localhost:1336/subsite我得到以下流程:

  • GET for http://localhost:1336/subsite-> 302 to /account/sign-in?ReturnUrl=%2fsubsite (看起来不错)
  • 输入用户/密码
  • POSThttp://localhost:1336/account/sign-in?ReturnUrl=%2fsubsite-> 302 /subsite (授权看起来很成功)
  • GET for http://localhost:1336/subsite-> 302 to /account/sign-in?ReturnUrl=%2fsubsite (即子网站认为它没有经过身份验证)

我也可以在浏览器的列表中看到 cookie(所以它确实在那里)

我的配置有什么问题阻止我的子站点共享父 cookie?

我在 IISExpress 上运行它

4

1 回答 1

6

在您的 web.config 文件中,设置项目之间的通用机器密钥,以便 2 个域共享验证和解密密钥。

例子:

<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7" 
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>
于 2013-03-24T20:50:57.860 回答