如果我不离开我登录的页面,我无论如何都会交出会话。然而,尽管我在同一个浏览器中打开了一个新页面,但我无法访问它。知道为什么会发生这种情况吗?
关键代码片段:
Startup.cs>配置服务:
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddAuthorization();
services.AddAuthentication();
services.AddScoped<AuthenticationStateProvider, UserService>();
services.AddHttpContextAccessor();
services.AddHttpClient();
用户服务:
public async Task<UserDto> GetUserSession()
{
var localUserJson = await protectedSessionStore.GetAsync<string>(USER_SESSION_OBJECT_KEY);
}
login.rarzor:
protected override async void OnAfterRender(bool firstRender)
{
if (firstRender)
{
if (await ServiceProvider.Get<UserService>().GetUserSession() != null)
{
NavigationManager.NavigateTo("/Dashboard");
}
}
}
尽管我在同一浏览器中打开了一个新页面,但我无法访问它。
这是预期的行为。
根据文件:
- sessionStorage的作用域为浏览器选项卡。如果用户重新加载该选项卡,状态将持续。如果用户关闭选项卡或浏览器,则状态将丢失。如果用户打开多个浏览器选项卡,则每个选项卡都有自己独立的数据版本
听起来你想要LocalStorage:
- localStorage的作用域是浏览器的窗口。如果用户重新加载页面或关闭并重新打开浏览器,则该状态将持续存在。如果用户打开多个浏览器选项卡,则状态在这些选项卡之间共享。在明确清除之前,数据一直保存在本地存储中