Настройка общего маршрута в приложении ASP.NET Core SPA - PullRequest
0 голосов
/ 18 мая 2018

Я создал приложение ASP.NET Core 2.1 SPA, используя встроенный шаблон React / Redux, который довольно хорошо настраивает все.

Мое приложение требует аутентификации, и, поскольку оно SPA app, я хочучтобы мои параметры аутентификации были достаточно простыми, поэтому я настроил только jwt аутентификацию и MSAL для обработки jwt токенов.

Однако мне бы хотелось иметь простую статическую HTML-страницу для публичного / не-утентифицированные пользователи.Поэтому мой вопрос заключается в том, как мне создать этот маршрут для анонимных пользователей и убедиться, что они перенаправлены на него?

Структура проекта показана ниже, это именно то, что я получил из коробки, когда VS создал приложение Reactдля меня:

enter image description here

И единственный маршрут, который я вижу в Startup.cs вместе со связанной с SPA конфигурацией:

app.UseStaticFiles();
app.UseSpaStaticFiles();

app.UseMvc(routes =>
{
    routes.MapRoute(
       name: "default",
       template: "{controller}/{action=Index}/{id?}");
});

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

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

Итак, вкратце, как мне создать маршрут для статической страницы, которую я хочу создать для анонимных пользователей, и убедиться, что мои пользователи перенаправлены на нее, если они не входят с токеном jwt?

1 Ответ

0 голосов
/ 18 мая 2018

Однако мне бы хотелось иметь простую статическую HTML-страницу для публичных / не прошедших проверку подлинности пользователей.

Вы создаете одностраничное приложение, поэтому SPA является первымчто ваши пользователи будут поражать (по замыслу), и только клиентское приложение сможет определить, вошел ли пользователь в систему или нет.

Так что, если вы хотите перенаправить людей на статическую страницу, то это будетответственность SPA.Так что просто настройки window.location из вашего JavaScript должны нормально работать для перенаправления пользователей, если они не вошли в систему.

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

При этом, если вам действительно нужна статическая страница, вы можете просто поместить еев папку wwwroot вашего основного приложения ASP.NET.Файлы там обслуживаются напрямую.Вы также можете использовать обычные страницы MVC или Razor для динамического отображения страницы, но, поскольку у вас ничего не настроено по умолчанию в шаблоне SPA, вы, вероятно, не захотите делать все это только для статической страницы.

...