ASP.net 2.2 MVC:注销
Posted
技术标签:
【中文标题】ASP.net 2.2 MVC:注销【英文标题】:ASP.net 2.2 MVC: Logout 【发布时间】:2020-01-21 14:05:11 【问题描述】:我有一个简单的登录-注销系统,不使用任何区域,所有视图都在文件夹视图中。
在我看来,我试图使用此功能注销,但这将我带到localhost:port/Account/logout
页面,而没有在 AccountController 中传递我的注销功能。
<a class="" asp-area="" asp-controller="Account" asp-action="Logout">Logout</a>
Google 搜索将我带到了一个注销表单,但我需要调用 Identity
区域才能使其工作。
<form asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Action("Index", "Home", new area = "" )" method="post" id="logoutForm" class="ml-auto">
<ul class="nav navbar-top-links navbar-right">
<li><button type="submit" class="fa fa-sign-out btn btn-w-m btn-link">Logout</button></li>
</ul>
</form>
我觉得这很奇怪,因为我没有那个区域。 我的 AccountController 有一个简单的标准注销功能,但我从来没有到达那里。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Logout()
await _signInManager.SignOutAsync();
_logger.LogInformation("User logged out.");
return RedirectToAction(nameof(HomeController.Index), "Home");
有谁知道我为什么没有到达那里,我所有的其他功能都通过 AccountController:登录、注册、忘记密码,...。只是我无法弄清楚的注销。
是否可以使用简单的<a>
链接或者我必须使用表单方法?
【问题讨论】:
【参考方案1】:这是因为您的控制器操作被明确设置为 POST 动词。链接继承地使用 GET 而不是发布。您必须执行一些 javascript 逻辑来处理链接单击并使用 post 提交或使用所示的 form 方法或翻转您的控制器操作以使用 Get 而不是 Post 。
【讨论】:
以上是关于ASP.net 2.2 MVC:注销的主要内容,如果未能解决你的问题,请参考以下文章
从 ASP.NET MVC 客户端应用程序和 .NET 5 openiddict 服务器注销。注销后重定向 URL 无效