如果您在通过模板创建项目时搭建了 Identity 并覆盖了旧的“LogOut.cshtml”,则“注销”按钮将不会注销。假设您使用了默认的 IdentityUser 模型。我遇到了这个问题,如果其他人也有这个问题,我只想添加这个。我正在将 Blazor Server 与 .Net 5.0.3 的模板一起使用。您也可以在之后删除 Logout.cshtml.cs。
替换此 \Areas\Identity\Pages\Account\LogOut.cshtml
@page
@model LogoutModel
@{
ViewData["Title"] = "Log out";
}
<header>
<h1>@ViewData["Title"]</h1>
@{
if (User.Identity.IsAuthenticated)
{
<form class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Page("/", new { area = "" })" method="post">
<button type="submit" class="nav-link btn btn-link text-dark">Click here to Logout</button>
</form>
}
else
{
<p>You have successfully logged out of the application.</p>
}
}
</header>
用。。。来代替
@page
@using Microsoft.AspNetCore.Identity
@attribute [IgnoreAntiforgeryToken]
@inject SignInManager<IdentityUser> SignInManager
@functions {
public async Task<IActionResult> OnPost()
{
if (SignInManager.IsSignedIn(User))
{
await SignInManager.SignOutAsync();
}
return Redirect("~/");
}
}