我的网站上有一个用户可以选择的子域列表。我想为他们选择的子域创建一个身份验证 cookie,而不是所有子域 假设我的站点是 mysite.com,那么用户可以看到
- domainOne.mysite.com
- domainTwo.mysite.com
当他们选择了他们的子域时,我在控制器操作中执行以下操作
var faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
faCookie.HttpOnly = true
faCookie.Domain = (subdomain + ".mysite.com")
faCookie.Secure = FormsAuthentication.RequireSSL
response.Cookies.Add(faCookie)
return this.Redirect("http://" + subdomain + ".mysite.com")
其中 encTicket 只是一些加密的用户信息
在提琴手我认为这是响应
HTTP/1.1 302 Found
Cache-Control: private, s-maxage=0
Content-Type: text/html; charset=utf-8
Location: http://domainOne.mysite.com
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
Set-Cookie: .ASPXAUTH=9ECF5B2533<snip>; domain=domainOne.mysite.net; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Fri, 19 Jul 2013 04:19:02 GMT
Content-Length: 142
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://domainOne.mysite.net">here</a>.</h2>
</body></html>
好的,所以对我来说一切都很好。repsonse 告诉浏览器为子域添加 cookie。然而,基于重定向的后续 GET 在其请求中根本没有 cookie。
有什么我想念的诡计吗?为了清楚起见,我不想为根 (.mydomain.com) 创建一个 cookie,因为这将提供跨所有子域的身份验证。
谢谢你的帮助