using Atomx.Common.Configuration; using Atomx.Common.Constants; using Microsoft.JSInterop; namespace Atomx.Admin.Client.Utils { public interface ITokenProvider { Task GetTokenAsync(); Task IsTokenValidAsync(); } public class ClientTokenProvider : ITokenProvider { private readonly IJSRuntime _jsRuntime; public ClientTokenProvider(IJSRuntime jsRuntime) { _jsRuntime = jsRuntime; } public async Task GetTokenAsync() { try { // 从localStorage或sessionStorage获取token return await _jsRuntime.InvokeAsync("localStorage.getItem", StorageKeys.AccessToken); } catch { return null; } } public async Task IsTokenValidAsync() { var token = await GetTokenAsync(); return !string.IsNullOrEmpty(token); } } }