Как потребовать неанонимного пользователя в .Net Core?

В .Net Core атрибут контроллера [AllowAnonymous] позволяет вам настроить контроллер, чтобы разрешить доступ к контроллеру не вошедшим в систему пользователям.

Есть ли способ сделать наоборот, потребовать, чтобы пользователь вошел в систему? Без предоставления всем пользователям роли и последующей проверки каждого контроллера с помощью [Authorize (Roles = "WarmBody")], я не могу понять, как требовать входа в систему?


person Parker Harris Emerson    schedule 17.11.2017    source источник


Ответы (2)


Вы должны добавить настраиваемый фильтр политики

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(config =>
        {
            var policy = new AuthorizationPolicyBuilder()
                         .RequireAuthenticatedUser()
                         .Build();
            config.Filters.Add(new AuthorizeFilter(policy));
        });

        //other code ...
    }

    //other code ...
}

Или установите [Authorize] Атрибут для каждого контроллера

person Anton Gorbunov    schedule 17.11.2017
comment
См. Также: основные документы по авторизации asp.net - person Cake or Death; 17.11.2017
comment
Или установите атрибут [Authorize] для каждого контроллера, вы также можете сделать это на настраиваемом базовом контроллере, и каждый контроллер, который требует авторизации, унаследовал от него. В зависимости от того, есть ли больше контроллеров, требующих аутентификации, чем тех, которые разрешают анонимный доступ. - person Jamie Taylor; 18.11.2017

Вам не нужна авторизация на основе ролей, просто используйте атрибут [Authorize] на контроллере или действия, которые вы хотите ограничить для зарегистрированных пользователей.

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/simple

person djones    schedule 17.11.2017