繁体   English   中英

ASP.net 2.2 MVC:注销

[英]ASP.net 2.2 MVC: Logout

我有一个简单的登录-注销系统,不使用任何区域,所有视图都在文件夹视图中。

解决方案树视图

在我看来,我试图用这个 function 注销,但这将我带到localhost:port/Account/logout页面,而没有在 AccountController 中传递我的注销 function。

<a class="" asp-area="" asp-controller="Account" asp-action="Logout">Logout</a>

谷歌搜索将我带到了一个注销表单,但我需要调用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 有一个简单的标准注销 function,但我从来没有到达那里。

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Logout()
{
    await _signInManager.SignOutAsync();
    _logger.LogInformation("User logged out.");
    return RedirectToAction(nameof(HomeController.Index), "Home");
}

有谁知道我为什么不去那里,我所有的其他功能都通过了 AccountController:登录、注册、忘记密码,....只是我无法弄清楚的注销。

是否可以使用简单的<a>链接或者我必须使用表单方法?

这是因为您的 controller 操作明确设置为 POST 动词。 链接继承地使用 GET 而不是发布。 您必须执行一些 javascript 逻辑来阻止链接单击并使用发布提交或使用所示的表单方法或翻转您的 controller 操作以使用获取而不是发布。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM