Jos*_*ose 7 asp.net asp.net-mvc forms-authentication
我有一个ASP.NET MVC应用程序,我正在使用Forms身份验证.当转到需要身份验证的页面时,意味着控制器操作上有[Authorize]属性,它会将用户重定向到具有返回URL的登录页面http://localhost/Login?ReturnUrl=/MyAuthorizedUrl
.
这是我的配置设置方式:
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="2880" defaultUrl="~/" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
这就是我获取重定向网址的方式:
var url = FormsAuthentication.GetRedirectUrl( model.Email, model.RememberMe );
Run Code Online (Sandbox Code Playgroud)
这始终返回默认网址.
是什么造成的?
我假设你想得到"MyAuthorizedUrl"的结果FormsAuthentication.GetRedirectUrl
?
您需要插入一个镜像的隐藏输入字段ReturnUrl=/MyAuthorizedUrl
,例如name="ReturnUrl" value="/MyAuthorizedUrl"
.
原因是登录页面是通过GET请求的ReturnUrl
,但POST转到/Login
(没有任何参数).
或者,更改表单操作属性以包含ReturnUrl
参数.
如果您的登录表格:
@using (Html.BeginForm
(
"Login",
"Account",
new { ReturnUrl = Request.QueryString["ReturnUrl"] },
FormMethod.Post
))
Run Code Online (Sandbox Code Playgroud)
将"登录"替换为您的操作名称,将"帐户"替换为您的控制器名称.