asp.net-mvc-3 - 需要 MVC 3 LoginPage 中 ReturnUrl 的帮助

标签 asp.net-mvc-3

我的登录 View 中有这个网址:http://localhost:5550/login?ReturnUrl=/forum/456&theme=1

当我进入登录页面时,我得到了正确的 url 值。 正如你所看到的,我有 2 个查询字符串参数:ReturnUrl 和 theme 到目前为止还不错。

现在登录页面将表单发送到 Controller 操作。 我所需要的只是读取这两个查询字符串参数的值。 我就是无法让它发挥作用。

这是我的登录页面 View :

@using (Html.BeginForm("try", "login"))
{
  //set text boxes and button so user can try login
}

这是我的 Controller ,我需要这两个值:

[HttpPost]
public ActionResult Try(LoginModel model, string ReturnUrl, string theme)
{     
   //read all query string param values...but how?
   //I am not getting anything in string ReturnUrl, string theme. They are null
}

问题的其他部分:

我可以调试其他 Controller 。但不是这个 Controller 。 这是因为我使用 BeginForm 发布表单吗? 没有道理。但即使我在浏览器上收到错误,断点也永远不会命中。

最佳答案

通常您不应该从 ReturnUrl 读取内容。流程如下:

  1. 请求 Controller 操作,需要使用 [Authorize] 属性进行身份验证
  2. ASP.NET MVC 添加 ReturnUrl 并重定向到/Account/LogOn,自动编码并附加 ReturnUrl 参数
  3. Account/LogOn POST Controller 操作在验证登录信息后,会重定向到 ReturnUrl 中的 URL。

我在以下帖子中详细描述了这一点:

第二篇文章指出了需要小心 ReturnUrl 的一个很好的理由 - 用户可以篡改它们。

在上面显示的示例中,我希望在授权后,用户将被重定向到论坛/索引操作,然后该操作将读取值。如果您要创建 ReturnUrl,则应该对第二个 & 进行 URL 编码。

关于asp.net-mvc-3 - 需要 MVC 3 LoginPage 中 ReturnUrl 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448939/

相关文章:

asp.net-mvc-3 - mvc3中的ReturnURL是什么

asp.net-mvc-3 - Orchard CMS Ajax 登录时防伪造 token

c# - MVC3 cookie 滑动过期不起作用

ajax - ASP.NET MVC 用户控件和撇号正在编码

jquery - 使用 jquery 和 mvc razor 的 delimitir 问题

css - 使用 CSS 为 ASP.NET MVC3 创建两个列布局创建 View

json - 将 json 对象发布到 MVC3 Controller , bool 值始终为 false

asp.net-mvc-3 - ASP.NET MVC3 - 文本框渲染的数据注释和最大长度/大小

c# - 将 varchar 日期显示为 D/M/Y?

c# - try catch 不处理 BadImageFormatException