我想創建過濾器,過濾器應該檢查角色(而不是asp.net成員身份或身份但我自己一個),我的願望是限制所有控制器操作(讓我們打電話它是來自低角色級用戶的「AuthController」)。MVC過濾器動作重定向到無限循環
在我的過濾條件中,我將限制用戶移到主頁。
當我在AuthController中刪除Ajax中的高角色級別時出現問題然後我的部分視圖將我帶到主頁。
有沒有一種優雅的方式來避免這種情況?
[HttpPost, ActionName("DeleteRole")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(Guid UserId, Guid RoleId)
{
CustomProvider CP = new CustomProvider();
CP.DeleteRoleFromUser(UserId, RoleId);
return PartialView("RolesDelete", db.Role.Where(p => p.Id == RoleId).SingleOrDefault());
}
過濾器:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (filterContext.HttpContext.User.Identity.IsAuthenticated && string.IsNullOrEmpty(NameFromExternal))
{
NameFromExternal = filterContext.HttpContext.User.Identity.Name;
}
CustomProvider cp = new CustomProvider();
if (CustomRoleProvider.Instance.IsUserInRole(cp.getADNameFromFullDomainName(NameFromExternal), eRoles.High.ToString()))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Auth" }, { "action", "Index" } });
filterContext.Result.ExecuteResult(filterContext.Controller.ControllerContext);
}
else
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" } });
filterContext.Result.ExecuteResult(filterContext.Controller.ControllerContext);
}
}
你的問題代碼與你的問題有什麼關係?你甚至沒有顯示你的過濾器 –
我寫了過濾器所做的事(條件:高角色繼續,低角色轉到主頁),問題是我的操作返回部分視圖,這是我不想限制。 – Velahs
再次,什麼過濾器?你需要在你的問題中顯示相關的代碼。 –