在虚拟目录表单验证(Forms Authentication across virtual dire

2019-07-23 02:34发布

我想从根应用程序的虚拟目录中运行的子应用共享窗体身份验证。 我有在子网站认证的麻烦。

在父应用程序一切正常。

我有以下设置:

父应用程序:

  • 网址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 ,我得到以下流程:

  • GEThttp://localhost:1336/subsite ? - > 302 /帐户/登入RETURNURL =%2fsubsite(看起来确定)
  • 输入用户名/密码
  • POSThttp://localhost:1336/account/sign-in?ReturnUrl=%2fsubsite - > 302 /子网站(伟大的权威性看起来像它的成功)
  • GEThttp://localhost:1336/subsite ? - > 302 /帐户/登入RETURNURL =%2fsubsite(IE子网站犯规认为其已认证)

此外,我可以看到在我的浏览器在列表中的cookie(所以它实际上有)

我有什么错我的配置是拦着我的子网站从共享父饼干吗?

我在IISExpress运行此

Answer 1:

在你的web.config文件,设置的项目,使2个域共享验证和解密密钥之间的共同机键。

例:

<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7" 
decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>


文章来源: Forms Authentication across virtual directories