重定向url不正确

本文关键字:不正确 url 重定向 | 更新日期: 2023-09-27 18:28:35

我正在开发一个带有用户登录页面的MVC 4项目。一切都很好。

问题是当我点击链接注销时,重定向URL不正确。

以下是更好地解释的代码:

视图:

<a href="@Url.Action("LogOff", "Account")">Logout ?</a>

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
  {
     WebSecurity.Logout();
      return RedirectToAction("Login", "Account");
  }

当我点击注销链接时,URL会显示此===>Account/LogOff

但我想重定向到此===>Account/Login

有人知道发生了什么事吗?

重定向url不正确

在HTML中,锚点元素(<a>)发送GET请求,而不是POST,因此永远不会调用[HttpPost]控制器操作。如果您想调用以下操作,您应该使用带有POST方法的HTML表单:

@using (Html.BeginForm("LogOff", "Account", FormMethod.Post))
{
    @Html.AntiForgeryToken()
    <button type="submit">Logout ?</button>
}

还请注意,我在表单中包含了一个AntiForgery令牌,因为您的控制器操作是用[ValidateAntiForgeryToken]属性装饰的,因此需要它。

删除HttpPost属性,一切都会好起来。

[ValidateAntiForgeryToken]
public ActionResult LogOff()
  {
     WebSecurity.Logout();
      return RedirectToAction("Login", "Account");
  }