首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC -跨子域认证/成员资格

ASP.NET MVC -跨子域认证/成员资格
EN

Stack Overflow用户
提问于 2009-07-25 08:08:25
回答 3查看 5.4K关注 0票数 11

在实现sub domain based language switcher时遇到一个障碍(en.domain.com加载英语,jp.domain.com加载日语)。

如何使单个成员系统跨多个子域(ASP.NET MVC C#)工作?

看到了一些关于在domain="domain.com"中添加<forms >条目的内容。这样做了,但在本地visual studio开发web服务器上进行测试时,这是否有效?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-25 09:55:26

自己动手做饼干吧。

在AccountController中,您可以找到以下内容:

代码语言:javascript
复制
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);

“创建cookie集合并将其添加到cookie集合”。它不允许修改域(但确实允许修改路径,奇怪的是)。相反,在不添加集合的情况下创建cookie,修改必要的属性,然后添加到集合中:

代码语言:javascript
复制
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);

詹姆斯

票数 8
EN

Stack Overflow用户

发布于 2010-06-30 15:46:53

你必须使用点前缀,就像这样。

代码语言:javascript
复制
<authentication mode="Forms">
    <forms domain=".tv.loc" loginUrl="~/signin" timeout="2880" name="auth" />
</authentication>
票数 4
EN

Stack Overflow用户

发布于 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域设置为"“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1181556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档