C# MVC多租户应用程序

C# MVC多租户应用程序,c#,asp.net-mvc,attributes,multi-tenant,C#,Asp.net Mvc,Attributes,Multi Tenant,嗨,我有一个多租户应用程序,我的问题是,租户a有权加载页面,而另一个租户B没有。我在ActionResult GetCars上有此属性[AllowAnonymous],但租户B无权访问此页面 处理这种情况的最佳方法是什么?我可以改写这个异名吗 谢谢你的建议 更新 我使用子域来识别公共站点上的租户。。。因此,tenant1.site.com可以看到公共站点,而tenant2.site.com不应该看到公共站点 更新二 目前我在BaseController中有这个代码,但我对此不满意 prote

嗨,我有一个多租户应用程序,我的问题是,租户a有权加载页面,而另一个租户B没有。我在ActionResult GetCars上有此属性[AllowAnonymous],但租户B无权访问此页面

处理这种情况的最佳方法是什么?我可以改写这个异名吗

谢谢你的建议

更新


我使用子域来识别公共站点上的租户。。。因此,tenant1.site.com可以看到公共站点,而tenant2.site.com不应该看到公共站点

更新二


目前我在BaseController中有这个代码,但我对此不满意

protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);

        var cultureName = CultureHelper.GetNeutralCulture(CultureHelper.GetCurrentCulture());
        cultureName = CultureHelper.GetImplementedCulture(cultureName);
        filterContext.RouteData.Values["language"] = cultureName.ToUpper();

        var tenantDTO = System.Web.HttpContext.Current.Cache["Tenant"] as TenantDTO;
        if (!string.IsNullOrWhiteSpace(tenantDTO.SubDomain))
        {
            if (tenantDTO.SubDomain != "tenantB" && !Request.IsAuthenticated && !filterContext.RouteData.Values["Action"].Equals("DoLogin"))
            {
                filterContext.Result = RedirectToAction(AuthenticationController.DoLoginFunction, AuthenticationController.ControllerName, new { area = AuthenticationController.AreaName });
            }
        }
    }

您需要查看用户角色谢谢您的回答,但在这种情况下,我不能使用用户角色,因为用户此时未登录。在这种情况下,这是标记为AllowAnonymous的公共站点。租户A可以查看此公共站点,而租户B不能。我更新了我的问题…如果是公共的,则是公共的。除非您知道租户B的IP地址,否则您无法阻止未登录的用户。然后您可以查看IP地址阻止。是的,我知道,但我不需要IP!我可以用子域处理这个问题。如果像租户B这样的子域,则重定向到登录页面…但如果用户已登录,则在将url粘贴到浏览器中时,他将无法看到此页面。。。见更新二