我正在尝试根据分配给用户的权限来过滤路由,这是我在BaseController
中的覆盖:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
string userId = User.Identity.GetUserId();
controllerName = filterContext.RequestContext.RouteData.Values["Controller"].ToString().ToLower();
actionName = filterContext.RequestContext.RouteData.Values["Action"].ToString().ToLower();
hasParam = filterContext.ActionParameters.Where(d=>d.Value!=null).Count();
if (!User.IsInRole("Administrator"))
{
if (controllerName == "campaign" && actionName == "index" && !IdentityHelper.HasPermission("CanAddCampaignApplication", userId))
{
filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { controller = "dashboard", action = "Index" }));
}
}
base.OnActionExecuting(filterContext);
}
代码在本地计算机上工作正常,但是当我托管站点时的问题是:
当我请求以下网址时,用户成功重定向到仪表板
mysite.com/Campaign
但是当我从Campaign
更改为campaign
时,如下所示:
mysite.com/campaign
用户可以访问所请求的URL,而不是重定向到仪表板,我进行了很多搜索,但还没有发现问题,请帮助。
预先感谢