Моя цель - создать REACT SPA, где пользователи смогут искать товары, складывать их в корзину и покупать. Это должен быть очень легкий интернет-магазин. Так что, с одной стороны, есть пользователи, прошедшие проверку подлинности, а с другой стороны, пользователи, не прошедшие проверку.
Я разработал REST-API с ASP.NET Core. Это в настоящее время защищено с Auth0. Пока что все отлично работает для аутентифицированных пользователей.
Но сейчас я борюсь с неавторизованными пользователями.
Я не хочу, чтобы любое неаутентифицированное стороннее программное обеспечение могло получить доступ к webapi. Поэтому каждый контроллер защищен с помощью [Авторизовать]. Я знаю, что могу установить для определенных конечных компонентов значение [AllowAnonymous], но тогда любой другой клиент может использовать API.
В настоящее время я использую поток аутентификации со страницы образца auth0. Это прекрасно работает с обеих сторон (фронтэн и бэкэнд), но, как я упоминал выше, только для аутентифицированных пользователей.
Мой подход:
Мой подход к обработке аутентифицированных пользователей (зарегистрированные пользователи с usertoken) и неаутентифицированные пользователи (api tokens) должны иметь 1 упаковку аутентификации и хранить как минимум 1 токен в локальном хранилище. Если пользователь входит в другой токен (токен пользователя), он хранится в локальном хранилище. Для каждого запроса к API приложение проверяет, есть ли токен пользователя или нет, и отправляет токен api или токен пользователя на серверную часть. В этом случае каждый запрос будет одобрен. Мне нужно только управлять обновлением и логином.