0

AuthorizationManager でコンテキストの原則が変更されている理由がわかりません。私のコードは

  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にアイテムのリストがあります。最初は正常に動作しますが、2 番目の項目を選択すると context.Principle が GenericPrinciple に変更されます。

これについては、どんなアイデアでも役に立ちます。

4

2 に答える 2

1

OK - WPF。

ええ、WPFにはThread.CurrentPrincipalの周りに「機能」があることを漠然と覚えています。

試す

Thread.CurrentPrincipal = プリンシパル

AppDomain.CurrentDomain.SetThreadPrincipal(プリンシパル);

IIRC App クラス (ctor?) でそれを行う必要があるかもしれません。

于 2012-12-24T10:12:37.383 に答える
1

「context.Principal.HasClaim (リソース、アクション) を返します;」

ええと、通常、クレームと承認の「決定」が 1 対 1 で関連付けられることはありません。また、典型的なシナリオでは、クレームは ID データのみを保持します - 何かのデータを後で使用して、承認の決定を下すことができます。次に、承認マネージャーは独自のデータ管理を使用してこれらの決定を行います。

これはクライアント アプリケーションであるため (WPF だとは知りませんでした)、少し異なる方法で行うことができます。サーバー アプリケーションでは、このアプローチは非常にうまく拡張できます。

于 2012-12-27T11:59:19.077 に答える