不要跨子域共享会话

时间:2020-09-21 10:44:21

标签: c# asp.net-mvc session-cookies multi-tenant

我在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();
            }
      }

0 个答案:

没有答案
相关问题