Shaamil M Ответов: 1

Как создать простой логин в системе ASP.NET ядро без базы данных и авторизации доступа к контроллеру


Как создать простой ASP.NET вход в систему на основе ядра без использования баз данных. Допустим, вместо использования базы данных у меня есть имя пользователя и пароль для входа в appsettings.json. Я мог бы легко получить доступ и получить значения appsettings. Но как я должен реализовать функциональность входа в систему и как я должен настроить службы в startup.cs (в Configure и ConfigureServices).

В методе Configure() я добавил
app.UseAuthentication();


Когда я войду в систему и перейду к классу контроллера, который использует аннотацию
[Authorize]
Я получаю следующую ошибку:

An unhandled exception occurred while processing the request.
InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found. The default schemes can be set using either AddAuthentication(string defaultScheme) or AddAuthentication(Action<AuthenticationOptions> configureOptions).
Microsoft.AspNetCore.Authentication.AuthenticationService.ChallengeAsync(HttpContext context, string scheme, AuthenticationProperties properties)

Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)


Что я уже пробовал:

В методе Configure() я добавил
app.UseAuthentication();

Richard MacCutchan

Вы должны делать то, что говорит вам сообщение об ошибке.

1 Ответов

Рейтинг:
0

dnxit

В Стартапе.Настройте, вызовите UseAuthentication и UseAuthorization, чтобы установить HttpContext.Свойство пользователя и запустить промежуточное программное обеспечение авторизации для запросов. Вызовите методы UseAuthentication и UseAuthorization перед вызовом UseEndpoints:

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
    endpoints.MapRazorPages();
});


Установите CookieAuthenticationOptions в конфигурации службы для проверки подлинности при запуске.Метод ConfigureServices:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        ...
    });


войти в систему
Вам нужно будет создать свои утверждения и пройти при создании удостоверения утверждений и установить схему аутентификации

var claims = new List<Claim>
{
    new Claim(ClaimTypes.Name, user.Email),
    new Claim("LastChanged", {Your Value})
};

var claimsIdentity = new ClaimsIdentity(
    claims, 
    CookieAuthenticationDefaults.AuthenticationScheme);

await HttpContext.SignInAsync(
    CookieAuthenticationDefaults.AuthenticationScheme, 
    new ClaimsPrincipal(claimsIdentity));


выход

await HttpContext.SignOutAsync(
    CookieAuthenticationDefaults.AuthenticationScheme);

Для получения более подробной информации, пожалуйста, прочтите эту статью
Использовать файл cookie проверки подлинности без ASP.NET ядро личности | Майкрософт документы[^]