ASP.NET MVC – 跨子域身份validation/成员身份
在实现基于子域的语言切换器时遇到障碍(en.domain.com加载英语,jp.domain.com加载日语)。
如何让单个成员资格系统跨多个子域工作(ASP.NET MVC C#)?
看到有关将domain="domain.com"
添加到web.config中的条目的内容。 那样做了,但是在本地visual studio开发Web服务器上测试时是否有效?
尝试自己创建cookie。
在AccountController中你会发现:
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
“创建并添加到cookie集合”。 它不允许修改域(但奇怪地允许修改路径)。 而是在不添加到集合的情况下创建cookie,修改必要的属性,然后添加到集合:
var a = FormsAuthentication.GetAuthCookie(userName, createPersistentCookie); //if you're debugging right here, a.Domain should be en.example.com; change it a.Domain = "example.com"; HttpContext.Current.Response.Cookies.Add(a);
詹姆士
你必须使用点前缀,就像这样。
您的问题是浏览器在请求期间如何发送cookie。
Cookie通常绑定到单个域,这是出于安全原因和性能。 例如,用户不希望将域名的cookie发送到任何其他域,因为您的cookie可能包含敏感信息。
浏览器可以区分使用en.domain.com和jp.domain.com设置的cookie。 他们不允许来自一个域的cookie转到另一个域,因为它们不在父域中。
解决问题的方法是接管生成cookie的控制权。 我没有玩过ASP.NET MVC,但我确信它不是通过HTML而是通过属性或其他东西来完成的。 这是一种非常常见的情况。 您应该为生产箱将cookie域设置为“domain.com”,这是正确的。 如果您正在使用本地方框,则应将cookie域设置为“”。