我有一个 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/