запретить пользовательскую роль
Как я могу запретить доступ к методу вызова. что-то вроде этого
[HandleError]
[Authorize(Roles = "role1, role2")]
public class AdminController : Controller
{
[Deny(Roles = "role2")]
public ActionResult ResultPage(string message)
{
ViewData["message"] = message;
return View();
}
}
1 ответ:
Вы можете просто сделать это наоборот и проверить наличие role1 вместо отсутствия role2. В качестве альтернативы вы можете разработать свой собственный DenyAttribute, который делает то, что вы хотите, и проверяет, что пользователь не находится в указанной роли.
[HandleError] [Authorize(Roles = "role1, role2")] public class AdminController : Controller { [Authorize(Roles = "role1")] public ActionResult ResultPage(string message) { ViewData["message"] = message; return View(); } } public class DenyAttribute : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { if (httpContext == null) { throw new ArgumentNullException("httpContext"); } IPrincipal user = httpContext.User; if (!user.Identity.IsAuthenticated) { return false; } if (Users.Length > 0 && Users.Split(',').Any( u => string.Compare( u.Trim(), user.Identity.Name, StringComparer.OrdinalIgnoreCase))) { return false; } if (Roles.Length > 0 && Roles.Split(',').Any( u => user.IsInRole(u.Trim()))) { return false; } return true; } }