Как добавить авторизацию в RazorPages?

Я просмотрел текущие официальные документы Microsoft и не смог чтобы найти что-нибудь, правильно описывающее, как обрабатывать авторизацию для RazorPages.

Я понял, что вы можете добавить AuthorizeAttribute к PageModel вот так:

// using Microsoft.AspNetCore.Authorization

[Authorize]
public class IndexModel : PageModel
{
    ...
}

Я не хочу повторять это для каждой страницы. Есть ли способ лучше?


person Svek    schedule 23.10.2017    source источник


Ответы (1)


Вы можете настроить авторизацию по методу ConfigureServices. Вот пример:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizeFolder("/MembersOnly");
        options.Conventions.AuthorizePage("/Account/Logout");

        options.Conventions.AuthorizeFolder("/Pages/Admin", "Admins"); // with policy
        options.Conventions.AllowAnonymousToPage("/Pages/Admin/Login"); // excluded page

        options.Conventions.AllowAnonymousToFolder("/Public"); // just for completeness
    });

Пример выше является расширением примера, приведенного в официальном репозитории.

AuthrorizeFolder будет ограничивать доступ ко всей папке, тогда как AuthorizePage будет ограничивать доступ на основе отдельной страницы. Соответственно, AllowAnonymousToFolder и AllowAnonymousToPage делают наоборот.

Что касается конкретной документации по вышеизложенному, на сегодняшний день документация все еще завершается. Однако вы можете прочитать о ее ходе и отслеживать его здесь https://github.com/aspnet/Docs/issues/4281

person Svek    schedule 23.10.2017