在我的网站中,我实现了自定义会话值。其中,在登录时我将会话值设置为某个对象。此对象用于从db。
中提取用户特定数据现在问题是如果用户使用以下命令登录:test1.somesite.com并注销并再次使用以下命令登录:test2.somesite.com用户仍然从特定于test1.somesite.com的对象接收数据。< / p>
关键是当用户第一次登录时,如果他使用另一个子域登录,他总是从先前的子域登录获取数据。
从特定域注销我清除了所有会话(尝试了所有内容):通过放置HttpContext.session [“UserDetail”] = null;,HttpContext.Session.Abandon()以及HttpContext.Session.Clear();
但似乎没有任何效果
我也不太了解如何跨子域处理会话变量。
我的意思是,如果我通过访问test1.somesite.com来初始化一个具有一个值的会话,如果在同一台计算机上并且在同一个浏览器上我也打开test2.somesite.com,那么该值也是可见的。
任何帮助,请
答案 0 :(得分:1)
听起来像是一个cookie问题。尝试清除会话cookie。有点像:
if (!User.Identity.IsAuthenticated)
{
if (Request.Cookies["ASP.NET_SessionId"] != null)
{
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddDays(-1);
}
Session.Abandon();
}
答案 1 :(得分:0)
您需要做的是设置您的asp.net会话ID cookie以写入外卡域。
Response.Cookies(“ASP.NET_SessionId”)。Domain =“yourdomain.com”//或“* .yourdomain.com”
这样cookie就可以浮动到你的子域。