myesn

myEsn2E9

hi
github

ABP 権限

紹介#

ABP の権限管理は非常に包括的であり、インターフェースのアクセス、ページのアクセス、メニュー、部分レンダリング、JavaScript などを含みます。以下では、ABP の権限のすべての使用シナリオについて説明します。

権限の定義の変更#

  1. *.Application.Contracts\\Permissions\\*PermissionDefinitionProviderの内容を変更するために修正します。
  2. *.DbMigratorプロジェクトを実行すると、"admin" ロールに新しい権限が自動的に付与されます。

インターフェースの認証#

ログイン後のユーザーのアクセスのみを許可する場合は、サービスに[Authorize]タグを追加するだけで済みます。

ABP の CRUD 関数の認証を行う場合は、サービスの実装クラスのコンストラクタに以下の内容を追加します。

// 注意:実際の状況に応じて、代入文の後のPermission Policyを変更してください
GetPolicyName = *Permissions.RemoteServersConfiguration.Default;
GetListPolicyName = *Permissions.RemoteServersConfiguration.Default;
CreatePolicyName = *Permissions.RemoteServersConfiguration.Create;
UpdatePolicyName = *Permissions.RemoteServersConfiguration.Edit;
DeletePolicyName = *Permissions.RemoteServersConfiguration.Delete;

カスタム関数の認証を行う場合は、2 つの方法があります。以下の Permission Policy は実際の状況に応じて変更してください。

  • 関数内でawait CheckPolicyAsync(GetListPolicyName);を呼び出す
  • メソッドのシグネチャに[Authorize(GetListPolicyName)]タグを追加する

ウェブサイトのサイドバーの認証#

ウェブサイトのサイドバーメニューに表示または非表示のメニューを設定するには、メニューの認証を行います。

  1. *.Web\Menus\*MenuContributor.ConfigureMainMenuAsync()を見つけます。
  2. メニューメタデータを定義します。
  3. メニュー内で.RequirePermissions(*Permissions.RemoteServersBoard.Default)を呼び出します。この関数内の Permission Policy は実際の状況に応じて調整してください。

Razor Pages の認証#

メニューの認証だけではページを本当に保護することはできません。ブラウザで直接パスを入力してもページにアクセスできるため、ページの認証も行う必要があります。

  • *.Web\*WebModule.ConfigureServices()を見つけ、Configure<RazorPagesOptions>のコードに移動します。

  • 現在の設定を参考に、以下のコードを追加してページのパスを認証します。ページのパスと Permission Policy は実際の状況に応じて変更してください。

    options.Conventions.AuthorizePage("/RemoteServers/Board/Remote", *Permissions.RemoteServersBoard.Remote);    
    

Razor Pages サーバーサイドレンダリングの認証#

ページの認証を行った後、ページ内でサーバーサイドレンダリングされるコンテンツも認証する必要があります。つまり、ページ内で使用できる機能に対してのみアクセスを許可します。

  • Razor Pages のページに@inject IAuthorizationService AuthorizationServiceを追加して認証サービスを注入します。

  • 認証が必要なサーバーサイドレンダリングコンテンツの外側に以下の認証コードを追加します。Permission Policy は実際の状況に応じて変更してください。

    @if (await AuthorizationService.IsGrantedAsync(*Permissions.RemoteServersConfiguration.Create))
    {
    	<p>hi</>
    }    
    

JavaScript の認証#

サーバーサイドレンダリングのコンテンツを認証したとしても、アプリケーションを本当に保護することはできません。なぜなら、一部のコンテンツは JavaScript で動的にロードされるため、JavaScript で認証する必要があるからです。

  • 認証が必要な JavaScript コードを開き、以下の認証コードを追加します。Permission Policy は実際の状況に応じて変更してください。

    abp.auth.isGranted('*.RemoteServers.Configuration.Edit')    
    
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。