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

Pau*_*aul 11 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)
Run Code Online (Sandbox Code Playgroud)

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

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

有没有最佳实践来实现这一目标?或者我是否必须为parent.com设置另一个cookie?

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

谢谢!

Ros*_*ied 6

您可以跨域共享饼干像你正在尝试做的,但它不是直接的,例如在这里.

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

如果您使用MVC,您可以非常轻松地创建自定义过滤器并添加到www.parent.com控制器以检查cookie的存在,如果是,则重定向到cookie指定的子域.这里有过滤器的更多细节.