フィルタを作成しようとしていますが、フィルタはロールをチェックすることになっています(.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
再度、どのフィルタ?あなたはあなたの質問に関連するコードを表示する必要があります。 –