【发布时间】:2018-02-04 18:07:48
【问题描述】:
我正在尝试创建过滤器,该过滤器应该检查角色(不是 asp .NET 成员资格或身份,而是我自己的一个),我希望限制所有控制器操作(下面将其称为“AuthController” ) 来自低角色级别的用户。
在我的过滤条件中,我删除了限制用户访问主页。
当我在 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);
}
}
【问题讨论】:
-
您显示的代码与您的问题有什么关系?你甚至没有显示你的过滤器
-
我写了过滤器的作用(条件:高角色继续,低角色进入主页),问题是我的操作返回部分视图,这是我不想限制的。跨度>
-
再一次,什么过滤器?您需要在问题中显示相关代码。
-
编辑我的问题
标签: asp.net-mvc url asp.net-mvc-ajax asp.net-mvc-filters