ASP.NET 子域 Cookie(父域和一个子域)

标签 asp.net asp.net-mvc forms-authentication

我有一个包含多个子域的应用程序,subone.parent.com、subtwo.parent.com。

我在 parent.com/login 上有一个登录页面。当用户登录时,我会根据他们所属的域将他们重定向到正确的域。这工作正常。

FormsAuthenticationTicket ticket = new FormsAuth...
string encTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
cookie.Domain = subone.parent.com
Response.Cookies.Add(cookie)

这正确地为 subone.parent.com 而不是 subtwo.parent.com 验证了用户。但是我想做以下事情。

如果用户返回 parent.com,我想知道他们已登录并将其重定向回 subone.parent.com。

是否有实现此目的的最佳实践?还是我必须为 parent.com 设置另一个 cookie?

如果重要的话,我正在 asp.net mvc 中工作。

谢谢!

最佳答案

您可以像尝试一样跨域共享 cookie,但这并不简单,例如 here .

另一种选择是将 cookie 设置为“.parent.com”,而不是明确指定子域,并使用 cookie 存储子域的详细信息。然后您可以从您的任何子域(以及假设其为 www.parent.com 的父域)访问 cookie。

如果您使用 MVC,您可以很容易地创建自定义过滤器并添加到 www.parent.com Controller 以检查 cookie 是否存在,如果是,则重定向到 cookie 指定的子域。更多过滤器详情 here .

关于ASP.NET 子域 Cookie(父域和一个子域),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2172490/

相关文章:

c# - 使用确切的字符数进行表单验证

c# - 在 jqGrid 中,读取与保存单个属性/列是否有不同的值?

java - 使用Spring MVC如何获取用户提交后的表单数据?

asp.net - 如何在 ASP.NET 页面和 Windows 服务之间有效地传递不频繁的消息?

c# - 先学什么?

javascript - 从 C# 中的 jquery bootgrid 获取排序方向

c# - Persistent AuthCookie 已设置但被重定向到登录

asp.net - 使用 asp.net 表单例份验证,因此只有登录用户才能查看网站

c# - 在asp.net中绘制谷歌地图点之间的路径

asp.net-mvc - MVC 4 捕获所有路线从未到达