AuthorizationContext.Principal将自动从claimprincipal更改为GenericPr

本文关键字:GenericPr claimprincipal Principal AuthorizationContext | 更新日期: 2023-09-27 17:49:18

我不知道AuthorisationManager中的上下文原则是如何改变的。我的代码是

  public class AuthorisationManager : ClaimsAuthorizationManager
{
    public override bool CheckAccess(AuthorizationContext context)
    {
        var resource = context.Resource.First().Value;
        var action = context.Action.First().Value;
        return context.Principal.HasClaim(resource, action);
    }
    public override void LoadCustomConfiguration(System.Xml.XmlNodeList nodelist)
    {
        base.LoadCustomConfiguration(nodelist);
    }
}

我有GUI中的项目列表。它第一次工作很好,但当我选择第二个项目的上下文。Principle改为GenericPrinciple

AuthorizationContext.Principal将自动从claimprincipal更改为GenericPr

OK - WPF.

是的,我隐约记得有一些"功能"。

Thread.CurrentPrincipal = principal
AppDomain.CurrentDomain.SetThreadPrincipal(principal);

IIRC你可能需要在App类中做这个

return context.Principal.HasClaim(resource, action);

一般来说,索赔和授权"决定"之间没有1:1的相关性。此外,在典型的场景中,声明仅保存身份数据—稍后可以使用这些数据来进行授权决策。然后,授权管理器使用自己的数据管理来做出这些决策。

现在,由于这是一个客户端应用程序(我不知道它是WPF),您可能会做一些不同的事情。在服务器应用程序中,您的方法可伸缩性非常好。