Аутентификация в .net Core с использованием ReactJS SPA - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь добавить аутентификацию в приложение .net Core 2.1. Начиная с нуля: мы можем создать новое веб-приложение с реагированием, используя шаблон VS.

В этом соборе мы видим:

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";
    spa.ApplicationBuilder.UseAuthentication();


    if (env.IsDevelopment())
    {
        spa.UseReactDevelopmentServer(npmScript: "start");
    }
});

Я также добавил Auth контроллер и представления с конечными точками входа в систему / регистрации.

Как мне добавить логику, которая будет отклонять доступ к SPA, пока мы не войдем в приложение?

Я знаю, как регулярно использовать идентификационные данные asp.net, но с этим SPA мне нужен совет.

Ответы [ 2 ]

1 голос
/ 30 мая 2019

В Middleware вы можете проверить, аутентифицирован ли пользователь, например:

app.UseSpa(spa =>
{
    spa.ApplicationBuilder.MapWhen(
        (context)=>!context.User.Identity.IsAuthenticated, 
        ab => {
            ab.Run(async (ctx )=> {
                ctx.Response.StatusCode = 401;
                //redirect to login page
                ctx.Response.Headers.Add("Location", "....");
                //await ctx.Response.WriteAsync("Authecation Failed");
            });
        }
    );

    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
        spa.UseReactDevelopmentServer(npmScript: "start");
    }
});
0 голосов
/ 30 мая 2019

Для аутентификации с помощью SPA вы можете использовать некоторые технологии на стороне сервера, такие как JWT, для аутентификации пользователя. Поэтому, если пользователь успешно вошел в систему, вы можете дать ему токен, а когда пользователь запросит ваш API, вы можете отправить токен в заголовке запроса, чтобы сервер знал, кто вы, и разрешил вам доступ к ресурсу API.

Вы можете взглянуть на openiddict . У них есть полный пример с приложением Angular

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...