Я реализовал следующий атрибут действия в своем решении MVC.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeADAttribute : AuthorizeAttribute
{
public string[] Groups { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (base.AuthorizeCore(httpContext))
{
/* Return true immediately if the authorization is not
locked down to any particular AD group */
if (Groups == null)
return true;
foreach (var group in Groups)
if (httpContext.User.IsInRole(group))
return true;
}
return false;
}
}
И вызвал его так:
public const string Admin = "MY_DOMAIN\\Admins";
public const string Users = "MY_DOMAIN\\Users";
public const string AddUser = "MY_DOMAIN\\AddUser";
[AuthorizeAD(Groups = new string[] { Admin, Users })]
public ActionResult GridData(...)
{ ... }
[AuthorizeAD(Groups = new string[] { Admin, Users, AddUser })]
public ActionResult Add(...)
{ ... }
Казалось, что до сих пор он работал нормальнолокально без проблем), пока кто-то не заметил (по другому опубликованному мной вопросу), что я получил 401 ошибку на развернутом экземпляре.быть переработанным, если кто-то не имеет представления о том, что проблема может быть в среде хоста.Идея заключается в том, что для доступа к сайту пользователь должен находиться в группе администраторов или пользователей в активном каталоге, и если ему назначена роль пользователя, ему также необходимо принадлежать к другой группе, например: Добавить,Удалить, обновить и т. Д ...
Пока что я в значительной степени озадачен: /