пользователь отправляет запрос на сервер, сервер проверяет его токен, токен - оказывается просрочен. сервер берет токен и рефреш токен и отправляет в апи, чтобы получить новый токен доступа. новый токен получил, а как теперь сделать так, чтобы User.Identity.IsAuthenticated = true, не пойму
ты хочешь в том же запросе на сервер это сделать? ты же при первом запросе 403 должен вернуть и отправить запрос на рефреш токена, а потом только новый запрос к API
Есть API - который выдает токен и рефреш токен. Есть WebSite, контроллер которого отмечен атрибутом Authorize, человек залогинился, получил токен и рефреш токен. работает. истекает срок токена, он дальше работает, т.е. отправил с браузера на website запрос, токен просрочен IsAuthenticated= false. Сдесь же, website берет токен и рефеш токен и запрашивает новый токен у API. как мне после успешного получения нового токена выставить IsAuthenticated = true
Оно будет автоматом true когда ты пришлёшь след запрос с валидным токеном
со следующим запросом будет все ок, но в этом запросе, есть дальше дествия, которые проверяют этот флаг, к примеру @if (User.Identity.IsAuthenticated) { if (User.IsInRole("SuperAdmin") || User.IsInRole("Admin")) { Layout = "~/Views/Shared/_AdminLayout.cshtml"; } if (User.IsInRole("Expert")) { Layout = "~/Views/Shared/_ExpertLayout.cshtml"; } } else { { Layout = "_Layout"; } }
если пользователь прошел проверку, выставляю нужный слой, и получается, что в этот запрос User.Identity.IsAuthenticated = false и все ломается (
Это неправильное flow обновлять токен и что то делать если запрос вернёт 403
а как тогда правильно? пользователь должен работать не замечая ничего, он же не будет каждый раз логинится
Правильно это отработать на клиенте 403 ошибку послать запрос с рефреш токеном получить новый аксес токен и послать новый запрос
ну неужели нельзя провести аутентификацию ручками в коде
Обсуждают сегодня