C# ASP.Net MVC : RedirectFromLoginPage always goes to default url, 并且不返回 url

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

我有一个具有成员(member)登录功能的 MVC4 应用程序(通过 FormsAuthentication)。

这在 web.config 中定义如下。 我的默认 url 是主目录 (~/):

<roleManager enabled="true" />
<authentication mode="Forms">
  <forms defaultUrl="~" loginUrl="~/Account" />
</authentication>

在登录后方法中的我的 AccountController 中,以下代码是相关的。 当用户使用有效凭据单击登录时,将执行此代码。

if (Membership.ValidateUser(creds.Username, creds.Password))
{
    FormsAuthentication.RedirectFromLoginPage(creds.Username, false);
    return null;
}

现在,如果我导航(匿名)到:~/Admin,我将被重定向到 ~/Account 以登录,这是完美的。我可以看到 url 的构成如下:

http://localhost:23759/Account?ReturnUrl=%2fAdmin

但是,当我成功登录时,我被重定向到主目录 (~/) 而不是 ~/Admin

求助! 非常感谢!

编辑:发现实际问题:是 post 方法没有收到查询字符串

最佳答案

我找到了解决方案! 感谢 FlopScientist,他让我进一步思考。

确实是因为我在做一个POST方法,没有考虑到GET中的QueryString。

首先我在我的 View 中有这个:

@using (Html.BeginForm("Index", "Account")
{
    <div class="LoginBox">
    //Etc...
    </div>
}

我已将其更新为以下内容:

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

现在我实际上可以在我的调试中看到一个查询字符串,并且我确实得到了正确的重定向!

关于C# ASP.Net MVC : RedirectFromLoginPage always goes to default url, 并且不返回 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790777/

相关文章:

c# - 使用 Entity Framework 在数据表中不返回任何值的过程

c# - MySQL C# 查询问题 - 更新表

c# - Web 服务在单声道 4 中不起作用

c# - MasterPage 中的 ASP.NET JavaScript 不起作用

asp.net-mvc-3 - DotNetOpenAuth.Asp 无法在 MVC4 应用程序单元测试中加载程序集或其依赖项之一

c# - 短按和长按处理

c# - Thread.Abort() 并在 finally 之后延迟

javascript - 在 asp.net 项目中,如何提交 javascript 对象?

c# - 我的 MVC4 路由、参数、构造函数有什么问题?

c# - 当首先使用带有数据注释的 MVC 代码时,如何在显示名称中包含 html 标记?