asp.net-mvc - ASP.net 2.2 MVC:注销
问题描述
我有一个简单的登录-注销系统,不使用任何区域,所有视图都在文件夹视图中。
我试图在我的视图中使用此功能注销,但这将我带到了localhost:port/Account/logout
页面,而没有在 AccountController 中传递我的注销功能。
<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 有一个简单的标准注销功能,但我从来没有到达那里。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Logout()
{
await _signInManager.SignOutAsync();
_logger.LogInformation("User logged out.");
return RedirectToAction(nameof(HomeController.Index), "Home");
}
有谁知道我为什么不去那里,我所有的其他功能都通过了 AccountController:登录、注册、忘记密码,....只是我无法弄清楚的注销。
是否可以通过简单的<a>
链接或者我必须使用表单方法?
解决方案
这是因为您的控制器操作已明确设置为 POST 动词。链接继承地使用 GET 而不是发布。您必须执行一些 javascript 逻辑来处理链接单击并使用 post 提交或使用所示的 form 方法或翻转您的控制器操作以使用 Get 而不是 Post 。
推荐阅读
- maven - 处理 Parent pom 时遇到问题
- angular - Webpack Bundle Analyzer 不适用于 Jhipster Angular 应用程序
- python - python枕头包在Rstudio中不起作用
- javascript - 从平面到嵌套对象递归javascript
- python - 第一个 Flask 单元测试成功,所有后续测试都失败。也许是陈旧的 app_context?
- ios - Swift Firebase 观察 .childAdded 对现有项目而不是新项目做出反应
- c# - 可以转换为有效日期时间的最长字符串是多少?
- f# - F# 使用 FSharp.Data 无法获得 basicAuth 工作
- java - 创建自定义身份提供者并使用 keycloak 对其进行配置
- java - 用户类抛出异常:java.util.MissingFormatWidthException: %-%