我正在尝试在 Blazor 中创建一个新应用程序并正在进行身份验证。我正在使用存储在本地存储中的 JWT 令牌。当应用程序加载时,我需要检查存储中是否有令牌。如果是这样,请将其添加到所有 API 请求的 HTTP 标头中,如果不是,则在页面加载之前重定向到登录页面......我在哪里可以做到这一点?有多个页面需要进行此检查,因此需要在一个位置完成此检查以覆盖所有页面。这应该在启动中完成吗?
搜索没有提供解决方案,因为我是 Blazor 新手,找到正确的搜索词有点困难:)
创建一个组件并为其命名RedirectToLogin.razor
:
@inject NavigationManager Navigation
@code {
[CascadingParameter]
private Task<AuthenticationState> AuthenticationStateTask { get; set; }
protected override async Task OnInitializedAsync()
{
var authenticationState = await AuthenticationStateTask;
if (authenticationState?.User?.Identity is null || !authenticationState.User.Identity.IsAuthenticated)
{
var returnUrl = Navigation.ToBaseRelativePath(Navigation.Uri);
if (string.IsNullOrWhiteSpace(returnUrl))
Navigation.NavigateTo("YourLoginPath", true);
else
Navigation.NavigateTo($"{YourLoginPath}?returnUrl={returnUrl}", true);
}
}
}
Modify App.razor
:
<Found Context="routeData">
<AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(HostLayout)">
<NotAuthorized>
<RedirectToLogin></RedirectToLogin>
</NotAuthorized>
</AuthorizeRouteView>
</Found>
学分转到:本文
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)