【问题标题】:FormsAuthentication.GetRedirectUrl Always Returns the DefaultFormsAuthentication.GetRedirectUrl 始终返回默认值
【发布时间】:2016-08-03 20:05:13
【问题描述】:

我有一个 ASP.NET MVC 应用程序并且正在使用 Forms auth。当转到需要身份验证的页面时,这意味着控制器操作上有一个 [Authorize] 属性,它将用户重定向到登录页面,返回 URL 为 http://localhost/Login?ReturnUrl=/MyAuthorizedUrl

我的配置是这样设置的:

<authentication mode="Forms">
  <forms loginUrl="~/Login" timeout="2880" defaultUrl="~/" />
</authentication>

这就是我获取重定向网址的方式:

var url = FormsAuthentication.GetRedirectUrl( model.Email, model.RememberMe );

这总是返回默认的 url。

这是什么原因造成的?

【问题讨论】:

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


    【解决方案1】:

    我假设您希望得到“MyAuthorizedUrl”作为FormsAuthentication.GetRedirectUrl 的结果?

    您需要插入一个与ReturnUrl=/MyAuthorizedUrl 相同的隐藏输入字段,例如name="ReturnUrl" value="/MyAuthorizedUrl".

    原因是登录页面是通过带有ReturnUrl的GET请求的,但POST转到/Login(没有任何参数)。

    或者更改表单操作属性以包含ReturnUrl 参数。

    【讨论】:

      【解决方案2】:

      如果您的登录表单:

      @using (Html.BeginForm
      (
           "Login", 
           "Account", 
           new { ReturnUrl = Request.QueryString["ReturnUrl"] },
           FormMethod.Post
      ))
      

      将“登录”替换为您的操作名称,将“帐户”替换为您的控制器名称。

      【讨论】:

        猜你喜欢
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-12
        • 2021-11-03
        • 2017-12-25
        • 1970-01-01
        相关资源
        最近更新 更多