Blazor Webassembly身份验证速度非常慢



hi我创建了一个blazor webassembly项目,该项目使用API获取数据并进行授权。身份验证工作正常,问题是应用程序非常慢。例如,通过bazor应用程序登录过程可能需要5秒,而如果我通过API调用登录操作,则过程非常快。我做错了什么?这是用于身份验证的blazor代码。我没有包括API代码,因为身份验证是快速通过邮递员

登录.rarzor

@page "/login"
@inject IAuthService AuthService
@inject NavigationManager NavigationManager
@using System.Net.Http
@inject HttpClient Http
<h1>Register</h1>
<div class="card">
<div class="card-body">
<h5 class="card-title">Please enter your details</h5>
<EditForm Model="UserLoginViewModel" OnValidSubmit="HandleRegistration">
<DataAnnotationsValidator />
<ValidationSummary />
<div class="form-group">
<label for="email">Email address</label>
<InputText Id="email" class="form-control" @bind-Value="UserLoginViewModel.Email" />
<ValidationMessage For="@(() => UserLoginViewModel.Email)" />
</div>
<div class="form-group">
<label for="password">Password</label>
<InputText Id="password" type="password" class="form-control" @bind-Value="UserLoginViewModel.Password" />
<ValidationMessage For="@(() => UserLoginViewModel.Password)" />
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</EditForm>
</div>
</div>
<h2 value="@test" innderHtml="@test" text="@test"></h2>
@code {
string test = "wow";
private UserLoginViewModel UserLoginViewModel = new UserLoginViewModel();

private async Task HandleRegistration()
{
var result = await AuthService.Login(UserLoginViewModel);
if (result.Successful)
{
NavigationManager.NavigateTo("/");
}
}
}

身份验证服务->登录功能

public async Task<LoginResult> Login(UserLoginViewModel model)
{
var loginAsJson = JsonSerializer.Serialize(model);
var response = await _httpClient.PostAsync("Account/Login", new StringContent(loginAsJson, Encoding.UTF8, "application/json"));
LoginResult loginResult = JsonSerializer.Deserialize<LoginResult>(await response.Content.ReadAsStringAsync(), new JsonSerializerOptions { PropertyNameCaseInsensitive = true });

if (!response.IsSuccessStatusCode)
return loginResult;

await _localStorage.SetItemAsync("authToken", loginResult.Token);
((ApiAuthenticationStateProvider)_authenticationStateProvider).MarkUserAsAuthenticated(model.Email);
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", loginResult.Token);

return loginResult;
}

谢谢!

这可能不是你的问题,但我最近遇到了同样的事情。我在Blazor WebAssembly中的身份验证时间从不到一秒跳到了几秒钟。我追踪到了拒绝x帧。

认为这只会影响使用ASP.NET Identity进行身份验证的托管Blazor WebAssembly应用程序。换句话说,在设置托管项目时选中"个人帐户"的任何人。

一旦我设置了NWebSpec并添加了这一行,它就变得非常慢:

app.UseXfo(xfo => xfo.Deny());

我通过切换到相同的来源来解决问题:

app.UseXfo(xfo => xfo.SameOrigin());

把这个留在这里,以防其他人在这个问题上出错。

最新更新