ユーザーが特定のグループ内にあるかどうかを基本的にチェックするカスタム属性を実装しました。はいの場合、無許可の要求を処理します。私が抱えている問題は、コードがループし続け、問題を特定することです。もしわたしが持っていたら
私のコードは以下の通りです:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (base.AuthorizeCore(httpContext))
{
var context = new PrincipalContext(ContextType.Domain, "DOMAIN");
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(context, httpContext.User.Identity.Name);
if (userPrincipal != null)
{
PrincipalSearchResult<Principal> groups = userPrincipal.GetGroups();
bool found = groups.Any(item => item.Name == "NAME OF GROUP HERE");
if (found)
{
return false;
}
}
return true;
}
return false;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
{
{"action", "AccessDenied"},
{"controller", "Error"}
});
}
上記をglobal.asaxに追加し、フィルターに追加しました。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeADAtttribute());
}
誰かが私を助けてくれることを願っています。
ありがとう