【问题标题】:Redirect url are not the correct重定向网址不正确
【发布时间】:2013-08-22 16:13:27
【问题描述】:

我正在开发一个带有用户登录页面的 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

有人知道怎么回事吗?

【问题讨论】:

  • 这应该是 HttpGet 请求 AFAIK,删除 HttpPost 属性。它会将您重定向到正确的网页吗?

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

在 HTML 中,锚元素 (&lt;a&gt;) 发送 GET 请求,而不是 POST,因此您的 [HttpPost] 控制器操作将永远不会被调用。如果要调用此操作,您应该使用带有 POST 方法的 HTML 表单:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 2014-05-14
      • 2014-04-30
      • 1970-01-01
      • 2021-04-17
      相关资源
      最近更新 更多