我有两个asp.net网站。一个像domain.com,第二个是sub.domain.com。 domain.com在登录时设置aspxauth cookie并在注销时将其删除(通过过去的过期日期)。 Cookie域名是" .domain.com"所以双方都可以使用它。 sub.domain.com对于cookie是被动的,只是尝试读取cookie并在找到cookie时验证用户身份。
问题所在。经过一段时间后,浏览器会使用" domain.com"获取第二个ASPXAuth cookie。 (没有"。")域名 - 因此注销不起作用,因为只删除了第一个(" .domain.com")cookie。
配置
<authentication mode="Forms">
<forms loginUrl="~/account/login" timeout="2880" domain=".domain.com"/>
</authentication>
设置Cookie
public static void SetAuthCookie(IUserPrincipal principal, DateTime expiration)
{
var ticket = new FormsAuthenticationTicket(1, principal.Identity.Name, DateTime.Now, expiration, false,
principal.SessionId, FormsAuthentication.FormsCookiePath);
var encTicket = FormsAuthentication.Encrypt(ticket);
var response = HttpContext.Current.Response;
if (response.Cookies[FormsAuthentication.FormsCookieName] != null)
{
response.Cookies.Remove(FormsAuthentication.FormsCookieName);
}
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)
{
Expires = expiration,
Secure = FormsAuthentication.RequireSSL,
};
response.Cookies.Set(cookie);
}
删除Cookie
public static void SignOut()
{
SetContextPrincipal(null);
FormsAuthentication.SignOut();
}