Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AuthorizationContext.Principal正在自动从ClaimsPrincipal更改为GenericPrincipal_C#_.net_.net 4.5_Claims Based Identity - Fatal编程技术网

C# AuthorizationContext.Principal正在自动从ClaimsPrincipal更改为GenericPrincipal

C# AuthorizationContext.Principal正在自动从ClaimsPrincipal更改为GenericPrincipal,c#,.net,.net-4.5,claims-based-identity,C#,.net,.net 4.5,Claims Based Identity,我不知道授权管理器中的上下文原则是如何变化的。我的代码是 public class AuthorisationManager : ClaimsAuthorizationManager { public override bool CheckAccess(AuthorizationContext context) { var resource = context.Resource.First().Value; var action = conte

我不知道授权管理器中的上下文原则是如何变化的。我的代码是

  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中的项目列表。第一次很好,但当我选择第二项时,上下文。原则被转换为一般原则

对此,任何想法都会有帮助。

好的-WPF

是的,我模模糊糊地记得WPF中有一些关于Thread.CurrentPrincipal的“特性”

试一试

Thread.CurrentPrincipal=principal

AppDomain.CurrentDomain.SetThreadPrincipal(主体)

IIRC您可能必须在应用程序类(ctor?)中执行此操作。

“返回context.Principal.HasClaim(资源,操作);”

嗯,通常情况下,在“决定”中没有1:1的索赔和授权。此外,在典型的场景中,声明只保存身份数据—稍后可以使用这些数据作为授权决策的基础。然后,授权管理器使用自己的数据管理来进行这些设计


现在,因为这是一个客户端应用程序(我不知道它是WPF),所以您可以做一些不同的事情。在服务器应用程序中,您的方法可以很好地扩展。

我的应用程序是基于WPF的桌面应用程序,我只是将基于用户的声明加载到其声明实体中。是不是错了,请纠正我。为什么它会违背基于索赔的授权的目的呢。。