不要跨子域共享会话

问题描述

我在ASP.NET MVC中有一个站点,该站点是多租户,如果URL包含子域abc,则该应用基于abc.mysite.com和xyz.mysite.com等子域标识租户,然后应用程序连接到abc数据库,并且同样适用于其他租户。

我的问题是,当我在同一浏览器中登录两个租户的站点并切换到URL时,应用程序允许我访问其他租户数据。如何防止一个子域的会话被另一个子域占用?

下面是我在Global.asax中当前的代码,在此我可以识别标题,但它不起作用。

  protected void Application_BeginRequest()

        {
            var requestedUrl = Request.Url.ToString().ToLower();
            var urlHeader = Convert.ToString(UrlContext.GetBaseUrl());   
            if (!requestedUrl.StartsWith(urlHeader)
                && ((ConfigurationManager.AppSettings["PublishMode"] != null ? ConfigurationManager.AppSettings["PublishMode"].ToString() : "production") == "production"))
            {
                UriBuilder builder = new UriBuilder(urlHeader);
                Response.StatusCode = 301;
                response.addheader("Location",builder.ToString());
                Response.End();
            }
      }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)