Asp.net mvc 登录url中的ReturnUrl参数
我正在使用MVC5开发一个应用程序。我已经为登录功能编写了代码。当我尝试启动应用程序时,登录页面被添加了一个查询字符串参数ReturnUrl。这是我的密码:Asp.net mvc 登录url中的ReturnUrl参数,asp.net-mvc,Asp.net Mvc,我正在使用MVC5开发一个应用程序。我已经为登录功能编写了代码。当我尝试启动应用程序时,登录页面被添加了一个查询字符串参数ReturnUrl。这是我的密码: public ActionResult Login() { var authentication = Authentication; if (Request.HttpMethod == "POST")
public ActionResult Login()
{
var authentication = Authentication;
if (Request.HttpMethod == "POST")
{
//code for user validation
}
return View();
}
我找不到将ReturnUrl参数添加到url的代码。有谁能帮我找到添加ReturUrl参数的代码吗?这是asp.net身份验证的默认行为。“returnUrl”是在您尝试访问私有url时添加的。如果要删除,则需要authorize类的自定义实现。默认情况下,
AuthorizeAttribute
类是System.Web.Mvc
命名空间的一部分(请参阅Github存储库:)。该方法会导致登录重定向,其中有HandleUnauthorizedRequest
:
protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
// Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs.
filterContext.Result = new HttpUnauthorizedResult();
}
来自上述方法的HTTP 401状态代码响应将触发FormsAuthenticationModule
(请参阅下面的参考资料),其中OnLeave
方法使用FormsAuthentication重定向到登录URL。ReturnUrlVar
属性包括:
strRedirect = loginUrl + "?" + FormsAuthentication.ReturnUrlVar + "=" + HttpUtility.UrlEncode(strUrl, context.Request.ContentEncoding);
// Do the redirect
context.Response.Redirect(strRedirect, false);
要覆盖此行为(包括删除
ReturnUrl
part),请从AuthorizeAttribute
类创建一个授权类,例如(这是一个示例实现):
然后,您可以实现如下自定义授权属性:
[CustomAuthorizeAttribute]
public ActionResult UserPage()
{
return View();
}
注意:在所有需要用户登录身份验证的页面上使用
AuthorizeAttribute
,对于登录页面,请改用AllowAnonymousAttribute
相关参考资料:
检查项目控制器文件夹中的AccountController.cs。上面显示的代码片段是从AccountController.cs复制的。但我在那里找不到任何与ReturnUrl相关的代码。详细问题:我已经为ForgetPassword创建了一个页面,并且在那里添加了登录页面的链接。当我重定向回登录页面时,并没有向url添加ReturnUrl参数@Html.ActionLink(“转到登录页面”、“登录”、“帐户”),我使用此代码在ForgetPassword页面中创建登录页面的链接。在哪里可以找到授权类?
AuthorizeAttribute
默认情况下,类是System.Web.Mvc命名空间的一部分,您可以为自定义授权功能创建从AuthorizeAttribute
扩展而来的授权类。这就是我所说的,我在哪里共享我的代码,但山本哲也已经共享了。感谢您的回复
[CustomAuthorizeAttribute]
public ActionResult UserPage()
{
return View();
}