MVC多租户应用程序

时间:2017-03-16 09:09:24

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

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

处理这种情况的最佳方法是什么?我可以覆盖这个AllowAnonymous吗?

感谢任何想法...

更新

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

更新II

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

0 个答案:

没有答案