Обновить токены с помощью Identity 8C#

Место общения программистов C#
Anonymous
Обновить токены с помощью Identity 8

Сообщение Anonymous »

В настоящее время я разрабатываю функцию аутентификации приложения, использующего ASP.NET 8 с Identity 8 и Angular спереди. Я настроил базовый вход и регистрацию только по http, у меня хорошая устойчивость входа в систему, но мне трудно понять, как работает токен обновления в этом контексте.
У меня есть конечная точка обновления в моем API, но Я не могу получить к нему доступ, вот мой метод интерфейса:

Код: Выделить всё

const headers = { 'Content-Type': 'application/json' };  console.log("Refreshing...");
return this._httpClient.post(`${this.baseUrl}/refresh`, {}, { headers });}
и его следует отправлять всякий раз, когда я не прошел аутентификацию через защиту аутентификации:

Код: Выделить всё

if (accountService.currentUser()) {
return of(true); // Allow access if user is authenticated
} else {
// Fetch the current authentication state
return accountService.getAuthState().pipe(
switchMap((authState) => {
if (!authState.isAuthenticated) {
// If not authenticated, try refreshing the token
return accountService.refreshAccessToken().pipe(
map(() => {
// After refreshing, recheck the authentication state
return true; // Token refresh was successful, allow access
}),
catchError(() => {
// If refreshing fails, redirect to login
router.navigate(['/account/login'], { queryParams: { returnUrl: state.url } });
return of(false);
})
);
} else {
// If authenticated, allow access
return of(true);
}
}),
catchError(() => {
// Handle any errors (e.g., network issues) and redirect to login
router.navigate(['/account/login'], { queryParams: { returnUrl: state.url } });
return of(false);
})
);
}
В моей серверной части у меня нет огромной конфигурации, я просто пытался дать моему токену очень короткий срок службы, чтобы увидеть, как запрос на обновление отправляется через вкладку сети, но я нет:

Код: Выделить всё

services.Configure(options =>
{
options.TokenLifespan = TimeSpan.FromSeconds(3);
});
Я что-то упустил? Вам нужно увидеть больше моего кода?
Я пытался добавить пустой {refreshToken: '' в тело запроса, но это тоже не работает, попробовал чтобы прочитать документ Microsoft...

Подробнее здесь: https://stackoverflow.com/questions/790 ... identity-8

Вернуться в «C#»