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

这是我的配置的设置方式:

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

这就是我获取重定向 url 的方式:
var url = FormsAuthentication.GetRedirectUrl( model.Email, model.RememberMe );

这总是返回默认 url。

这是什么原因造成的?

最佳答案

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

您需要插入一个反射(reflect) ReturnUrl=/MyAuthorizedUrl 的隐藏输入字段,例如name="ReturnUrl" value="/MyAuthorizedUrl"

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

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

关于asp.net - FormsAuthentication.GetRedirectUrl 始终返回默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4246606/

10-12 05:31