4

asp.net コアでは、次のように、ページとフォルダーに対する Razor ページの承認を非常に簡単に定義できます。

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizePage("/Contact");
        options.Conventions.AuthorizeFolder("/Private");
        options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
        options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
    });

私の問題は、プロジェクトでロールを使用したいのですが、ページのコンテンツを表示できるロールを定義する方法が見つからないことです。

Authorize 属性を使用しようとしましたが、Razor Pages では機能しません。

AuthorizePage は、現在の使用者が指定されたページを表示できるかどうかを判断するために使用されるポリシーを定義するために使用できる 2 番目のパラメーターを取ることができます。次のように使用しました。

services.AddAuthorization(options =>
{
    options.AddPolicy("RequireAdministratorRole", policy => policy.RequireRole("Admin"));
});

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizePage("/Index", "RequireAdministratorRole");
    });

問題は、それがまだ機能しないことです。ポリシーを定義していないように見えます。ログインしているときはページが表示され、ログインしていないときはログインフォームにリダイレクトされます。

それを機能させるために私がしなければならないことは他にありますか?

4

2 に答える 2