可以使用浏览器缓存或本地存储来保存用户身份验证信息,以避免在页面刷新后用户被注销的问题。
例如,可以将用户信息存储在浏览器的 session storage 中:
public static class StorageHelper
{
private static readonly ISessionStorage localStorage = new LocalStorageService();
public static async Task SetItemAsync(string key, object value)
{
await localStorage.SetItemAsync(key, JsonSerializer.Serialize(value));
}
public static async Task GetItemAsync(string key)
{
var json = await localStorage.GetItemAsStringAsync(key);
return string.IsNullOrEmpty(json) ? default : JsonSerializer.Deserialize(json);
}
public static async Task RemoveItemAsync(string key)
{
await localStorage.RemoveItemAsync(key);
}
}
然后,在用户身份验证成功后,将用户信息存储在 session storage 中:
public async Task Login()
{
// 验证用户身份,并获取用户信息 user
await StorageHelper.SetItemAsync("user", user);
}
在页面加载时,在 session storage 中检查是否存在用户信息,如果存在,则自动进行用户身份验证:
protected override async Task OnInitializedAsync()
{
var user = await StorageHelper.GetItemAsync("user");
if (user != null)
{
// 自动进行用户身份验证
}
}
当用户进行注销时,将用户信息从 session storage 中移除:
public async Task Logout()
{
// 注销用户身份
await StorageHelper.RemoveItemAsync("user");
}