我有两个网站: www.forums.mysite.com 和www.mysite.com
论坛已经设置了身份验证,我想使用它。
我正在使用C#MVC .NET 4.5
我在IIS 8.5中创建了两个站点:mysite和论坛
mysite绑定:
论坛绑定:
我还将域名添加到主机文件:
我已将MachineKey添加到两个应用程序Web.config文件中,并且键是相同的:
<machineKey validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" validation="SHA1" />
在子域(论坛)的控制器中,用户登录并修改了cookie,如下所示:
FormsAuthentication.SetAuthCookie(username, model.RememberMe);
var cookie = FormsAuthentication.GetAuthCookie(username, model.RememberMe);
cookie.Domain = "mysite.com"; //this is the parent domain
//I've also tried with .mysite.com
Response.AppendCookie(cookie);
我可以通过论坛登录,但是当我访问主站点(mysite.com)时,我还没有登录...我不明白为什么不这样做。
作为mysite.com/home/index.cshtml(主页)中的测试,我添加了这个:
<h1>
Logged in: @User.Identity.IsAuthenticated
</h1>
但结果始终为false,即使两个站点都具有相同的.ASPXAUTH cookie ...
有什么想法吗?
答案 0 :(得分:0)
域名可能是.mysite.com
(前导点),而不是mysite.com
。
<强> UPD。强>
此外,问题可能出在您的域名中的前导www
。尝试将Cookie域设置为www.mysite.com
或.www.mysite.com
(或在您的配置中删除www
,这只是一个古老的垃圾:))
<强> UPD。 2 强>
看起来为父域设置cookie存在问题(例如,请查看this),从某些角度来看,这是可以理解的。
只能建议:
www.mysite.com/keep-logined?c=<encoded_auth_data>
。keep-logined
脚本中反序列化auth数据并手动设置根域的cookie。keep-logined
网址提供redirect-back
脚本。 注意:请确保通过某种编码或密钥传递保护keep-logined
脚本并通过黑客攻击提供auth数据。