我创建了一个名为AuthorizationManager的类,它派生自ClaimsAuthorizationManager。 CheckAccess()方法被调用三次。为什么会这样?这是正常的过程吗?
我正在使用Thinktecture Identity Server v2。
AuthorizationManager类:
public class AuthorizationManager : ClaimsAuthorizationManager { public override bool CheckAccess(AuthorizationContext context) { Trace.WriteLine("\n__________Claims Authorization Manager__________\n"); var result = base.CheckAccess(context); CheckAction(context); CheckResource(context); CheckClaims(context); return result; } private void CheckAction(AuthorizationContext context) { var action = context.Action.First().Value; Trace.WriteLine("\nAction:"); Trace.WriteLine(action); } private void CheckResource(AuthorizationContext context) { var resources = context.Resource; Trace.WriteLine("\nResources:"); foreach(var resource in resources) { Trace.WriteLine(resource.Value); } } private void CheckClaims(AuthorizationContext context) { var claims = context.Principal.Claims; Trace.WriteLine("\nClaims:"); foreach (var claim in claims) { Trace.WriteLine(claim.Value); } } }
的AccountController
public class AccountController : Controller { [ClaimsAuthorize(action: "View", resources: "Profile")] public ActionResult Profile() { return View(); } }
输出/跟踪结果:
__________索赔授权经理__________
操作: GET
资源: [some_domain] /帐户/简档
权利要求: 管理 管理员
__________索赔授权经理__________
操作: 简档
资源: 帐户
权利要求: 管理 管理员
__________索赔授权经理__________
操作: 图
资源: 资料
权利要求: 管理 管理员