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
OK - WPF.
是的,我隐约记得有一些"功能"。
试
Thread.CurrentPrincipal = principal
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
IIRC你可能需要在App类中做这个
return context.Principal.HasClaim(resource, action);
一般来说,索赔和授权"决定"之间没有1:1的相关性。此外,在典型的场景中,声明仅保存身份数据—稍后可以使用这些数据来进行授权决策。然后,授权管理器使用自己的数据管理来做出这些决策。
现在,由于这是一个客户端应用程序(我不知道它是WPF),您可能会做一些不同的事情。在服务器应用程序中,您的方法可伸缩性非常好。