我想从根应用程序共享表单身份验证到在虚拟目录中运行的子应用程序。我在子网站中遇到了身份验证问题。跨虚拟目录的表单身份验证
在父应用程序中,一切都按预期工作。
我有以下设置:
父应用:
- URL:
http://localhost:1336/
<forms loginUrl="~/account/sign-in" protection="All" timeout="30" name=".MYAPPLICATION" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="true" defaultUrl="/" />
虚拟目录:
- URL:
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为
http://localhost:1336/subsite
- > 302 /帐号/点登录in?ReturnUrl =%2fsubsite (看起来不错) - Ent呃用户/密码,
- POST到
http://localhost:1336/account/sign-in?ReturnUrl=%2fsubsite
- > 302 /子网站(伟大的权威性看起来像它的成功) - GET为
http://localhost:1336/subsite
? - > 302 /帐号/登入RETURNURL =% 2fsubsite (即子网站犯规认为其已认证)
而且我可以看到在列表中的Cookie在我的浏览器(其实际上存在)
我的配置中有什么问题阻止了我的子网站共享父级cookie?
我对IISExpress
都设置在web.config中常见的machineKey? – 2013-03-24 20:18:06
@davea我的理解是,只有当这些站点位于不同的物理机器上时,才需要这样做。这些都在我的开发箱上。这不是这种情况吗? – 2013-03-24 20:22:25
我不认为这是真的。我正在研究一个相反的项目。 1个主机,主要和子域(管理员和客户端),我们不尊重签名以保持划分。我们不必配置此行为。这是默认的。 Ergo,我认为从同一台机器托管没有什么区别。 – 2013-03-24 20:27:18