ホームページ >バックエンド開発 >C++ >クレームを使用してASP.NETコアにカスタム認証を実装する方法は?

クレームを使用してASP.NETコアにカスタム認証を実装する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-02-01 18:16:10369ブラウズ

How to Implement Custom Authorization in ASP.NET Core Using Claims?

asp.netコアでステートメントを使用して、カスタマイズされた承認属性を実現

背景

asp.net core

は、宣言に基づいて運用する便利な方法を提供します。ただし、以前のバージョンでは、

を書き直してカスタマイズされた承認ロジックを実現できます。このメソッドは、AuthorizeAttributeに存在しなくなりました。 bool AuthorizeCore(HttpContextBase httpContext) AuthorizeAttribute戦略を使用する現在の方法

ASP.NET Core Teamは、カスタマイズされた承認のために戦略を使用することをお勧めします。以下がプロセスです:

    で戦略を定義します
  1. Startup.cs

    操作またはコントローラーに属性を追加します:
    <code class="language-csharp"> options.AddPolicy("YourPolicyName", policy => policy.RequireClaim(...));</code>
  2. [Authorize]ステートメントのカスタマイズされた承認属性を使用

    <code class="language-csharp"> [Authorize(Policy = "YourPolicyName")]
     public IActionResult Action(...)</code>
    戦略ベースのメソッドが適用されない場合、
  3. インターフェイスを使用してカスタム

を作成できます。

例:IAuthorizationFilter AuthorizeAttribute

フィルターに
<code class="language-csharp">public class ClaimRequirementAttribute : TypeFilterAttribute
{
    public ClaimRequirementAttribute(string claimType, string claimValue) : base(typeof(ClaimRequirementFilter))
    {
        Arguments = new object[] { new Claim(claimType, claimValue) };
    }
}

public class ClaimRequirementFilter : IAuthorizationFilter
{
    private readonly Claim _claim;

    public ClaimRequirementFilter(Claim claim)
    {
        _claim = claim;
    }

    public void OnAuthorization(AuthorizationFilterContext context)
    {
        bool hasClaim = context.HttpContext.User.Claims.Any(c => c.Type == _claim.Type && c.Value == _claim.Value);
        if (!hasClaim)
        {
            context.Result = new ForbidResult();
        }
    }
}</code>
メソッドを実装することにより、ステートメントに従って承認ロジックを指定できます。

以上がクレームを使用してASP.NETコアにカスタム認証を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。