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:登录、注册、忘记密码,...。只是我无法弄清楚的注销。

是否可以使用简单的&lt;a&gt; 链接或者我必须使用表单方法?

【问题讨论】:

【参考方案1】:

这是因为您的控制器操作被明确设置为 POST 动词。链接继承地使用 GET 而不是发布。您必须执行一些 javascript 逻辑来处理链接单击并使用 post 提交或使用所示的 form 方法或翻转您的控制器操作以使用 Get 而不是 Post 。

【讨论】:

以上是关于ASP.net 2.2 MVC:注销的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 真正使用表单身份验证注销

ASP.NET MVC 注销和返回按钮

ASP.NET MVC 4 表单无法注销

关闭浏览器 ASP.NET MVC 后如何注销用户

从 ASP.NET MVC 客户端应用程序和 .NET 5 openiddict 服务器注销。注销后重定向 URL 无效

如何在 OWIN ASP.NET MVC5 中注销用户