在实现sub domain based language switcher时遇到一个障碍(en.domain.com加载英语,jp.domain.com加载日语)。
如何使单个成员系统跨多个子域(ASP.NET MVC C#)工作?
看到了一些关于在domain="domain.com"中添加<forms >条目的内容。这样做了,但在本地visual studio开发web服务器上进行测试时,这是否有效?
发布于 2009-07-25 09:55:26
自己动手做饼干吧。
在AccountController中,您可以找到以下内容:
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);“创建cookie集合并将其添加到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);詹姆斯
发布于 2010-06-30 15:46:53
你必须使用点前缀,就像这样。
<authentication mode="Forms">
<forms domain=".tv.loc" loginUrl="~/signin" timeout="2880" name="auth" />
</authentication>发布于 2009-07-25 08:50:23
您的问题是浏览器如何在请求期间发送cookie。
Cookie通常与单个域相关联,这是出于安全原因和性能原因。例如,用户不希望将域的cookie发送到任何其他域,因为cookie可能包含敏感信息。
浏览器确实区分了使用en.domain.com和jp.domain.com设置的cookie。它们不允许一个域的cookie转到另一个域,因为它们不在父域上。
解决问题的方法是接管生成cookie的控制。我没有经常使用HTML,但我确信它不是通过HTML实现的,而是通过一个属性或什么的。这是一个非常常见的情况。您应该将生产框的cookies域设置为"domain.com“,这是正确的。如果您正在处理本地框,则应将cookie域设置为"“。
https://stackoverflow.com/questions/1181556
复制相似问题