我创建了一个名为AuthorizationManager的类,它派生自ClaimsAuthorizationManager . CheckAccess()方法被调用三次 . 为什么会这样?这是正常的过程吗?
我正在使用Thinktecture Identity Server v2 .
AuthorizationManager Class:
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();
}
}
OUTPUT/TRACE RESULT:
申请授权经理_
行动:GET
资源:[some_domain] / account / profile
声称:admin admin
授权经理_
行动:简介
资源:帐户
声称:admin admin
授权经理_
行动:查看
资源:简介
声称:admin admin