chore
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using Atomx.Admin.Client.Services;
|
||||
using Atomx.Common.Constants;
|
||||
using Atomx.Common.Models;
|
||||
using Blazored.LocalStorage;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
@@ -24,9 +25,6 @@ namespace Atomx.Admin.Client.Utils
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private static readonly SemaphoreSlim _refreshLock = new(1, 1);
|
||||
|
||||
private const string AccessTokenKey = "accessToken";
|
||||
private const string RefreshTokenKey = "refreshToken";
|
||||
|
||||
public AuthHeaderHandler(
|
||||
ITokenProvider tokenProvider,
|
||||
NavigationManager navigationManager,
|
||||
@@ -71,7 +69,7 @@ namespace Atomx.Admin.Client.Utils
|
||||
|
||||
if (refreshed)
|
||||
{
|
||||
var newToken = await _localStorage.GetItemAsync<string>(AccessTokenKey);
|
||||
var newToken = await _localStorage.GetItemAsync<string>(StorageKeys.AccessToken);
|
||||
if (!string.IsNullOrEmpty(newToken))
|
||||
{
|
||||
var clonedRequest = await CloneHttpRequestMessageAsync(request, newToken);
|
||||
@@ -109,8 +107,8 @@ namespace Atomx.Admin.Client.Utils
|
||||
await _refreshLock.WaitAsync(cancellationToken);
|
||||
try
|
||||
{
|
||||
var currentAccess = await _localStorage.GetItemAsync<string>(AccessTokenKey);
|
||||
var currentRefresh = await _localStorage.GetItemAsync<string>(RefreshTokenKey);
|
||||
var currentAccess = await _localStorage.GetItemAsync<string>(StorageKeys.AccessToken);
|
||||
var currentRefresh = await _localStorage.GetItemAsync<string>(StorageKeys.RefreshToken);
|
||||
|
||||
if (string.IsNullOrEmpty(currentAccess) || string.IsNullOrEmpty(currentRefresh))
|
||||
{
|
||||
@@ -139,8 +137,8 @@ namespace Atomx.Admin.Client.Utils
|
||||
{
|
||||
_logger.LogWarning("Refresh request failed with status {Status}", resp.StatusCode);
|
||||
// 如果刷新失败,移除本地 token(防止无限重试)
|
||||
await _localStorage.RemoveItemAsync(AccessTokenKey);
|
||||
await _localStorage.RemoveItemAsync(RefreshTokenKey);
|
||||
await _localStorage.RemoveItemAsync(StorageKeys.AccessToken);
|
||||
await _localStorage.RemoveItemAsync(StorageKeys.RefreshToken);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -153,14 +151,14 @@ namespace Atomx.Admin.Client.Utils
|
||||
if (authResp == null || string.IsNullOrEmpty(authResp.Token) || string.IsNullOrEmpty(authResp.RefreshToken))
|
||||
{
|
||||
_logger.LogWarning("Invalid response from refresh endpoint");
|
||||
await _localStorage.RemoveItemAsync(AccessTokenKey);
|
||||
await _localStorage.RemoveItemAsync(RefreshTokenKey);
|
||||
await _localStorage.RemoveItemAsync(StorageKeys.AccessToken);
|
||||
await _localStorage.RemoveItemAsync(StorageKeys.RefreshToken);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 保存新的 tokens 到 localStorage
|
||||
await _localStorage.SetItemAsync(AccessTokenKey, authResp.Token, cancellationToken);
|
||||
await _localStorage.SetItemAsync(RefreshTokenKey, authResp.RefreshToken, cancellationToken);
|
||||
await _localStorage.SetItemAsync(StorageKeys.AccessToken, authResp.Token, cancellationToken);
|
||||
await _localStorage.SetItemAsync(StorageKeys.RefreshToken, authResp.RefreshToken, cancellationToken);
|
||||
|
||||
_logger.LogInformation("Token refreshed successfully");
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user