【问题标题】:Authorize attribute ReturnUrl not working as expected授权属性 ReturnUrl 未按预期工作
【发布时间】:2014-02-22 02:54:33
【问题描述】:

MVC 4
剃须刀
C#
Forms.Authentication

我用[Authorize] 属性标记了一个控制器。它正确地将我带到登录页面。

在我的地址栏中,我看到 ReturnUrl 为 ?ReturnUrl=%2f

这是我的 [HttpPost] 方法。

[HttpPost]
public ActionResult Login(string ReturnUrl)
{
     return Redirect(ReturnUrl);
}

但是,此方法中的ReturnUrl 为空。我的表单正确地指向帐户/登录作为帖子。

我在这里遗漏了什么,不应该用 %2f 填充 ReturnUrl 吗?

【问题讨论】:

  • 这是一个post方法。 Post 方法不使用 URL 来获取数据。
  • @Jonesy 如何利用 ReturnUrl?这是通过 [Authorize] 属性自动完成的。
  • 它们没有任何关系。 [Authorize] 验证用户是否已登录。returnUrl 只是一个参数。通常,如果用户尝试在未登录的情况下访问 [Authorize] 区域,他们将被重定向到登录页面,并带有 returnUrl 参数。当他们登录时,他们会被定向到他们试图去的任何地方
  • 如果你新建一个MVC应用,应该已经实现了,你可以看看
  • @Jonesy 这是一个空的。如何伪造登录以测试 returnurl 是否有效?我试图删除 (string ReturnUrl) 但它不喜欢那样,因为我有另一个登录方法。只是想伪造一个登录,这样我就可以继续下一部分了。

标签: c# asp.net-mvc forms-authentication


【解决方案1】:

您应该在提交表单时在表单中传递 ReturnUrl 数据。

@Html.BeginForm("Login", "Account", new { ReturnUrl = "data" }, FormMethod.Post, new {}){}

【讨论】:

  • 我认为这让我更接近了,但 returnUrl 不是“数据”,我应该放什么来获取 returnurl?
  • 您希望将您作为参数传递的 ReturnUrl 重定向到哪里,该表单将被操作作为您的参数,然后您可以返回它。
  • 请记住,如果您不注册 cookie,您将始终被重定向到登录页面。
  • 所以我将其保留为"data",它会知道将数据转换为我网站上他们最初要去的任何页面?
  • 不,data是静态值,你可以保存你从哪里来的值,然后登录时重定向到它,看看这个链接希望对你有帮助@987654321 @
猜你喜欢
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多