【发布时间】:2026-02-07 12:10:01
【问题描述】:
由于不活动而退出登录后,我正在使用 returnUrl 返回上一个请求的页面。这本身就可以正常工作,除非用户不请求页面,而是请求其他操作。我想要的是,如果 SessionTimeOut 之后的第一个操作是例如“addItem”,returnUrl 设置为“controller/index”而不是“controller/addItem”。
在 SessionTimeOut 之后,应用程序不会自动重定向到登录页面。一旦用户在 SessionTimeOut 之后发出新请求(根据客户端的请求),重定向就会发生。所以当用户点击一个菜单项时,returnUrl 被设置为请求的页面。到目前为止很棒。 问题在于,例如当用户单击 addItem 按钮时,returnUrl 被设置为链接到该按钮的操作方法。我不明白如何从 returnUrl 中排除这种方法。
这是一个非常缩小的应用程序示例,以说明它是如何挂在一起的。
主控制器:
public ActionResult MainPage(){
return View();
}
public ActionResult addItem(){
--- Do Something ---
}
public ActionResult SecondPage(){
return View();
}
登录方式:
public ActionResult Login([Binde(Include = "UserName, Password")]LoginModel model, string returnUrl)
{
if(Modelstate.IsValid)
{
--- Do Validation ---
return Redirect(returnUrl);
}
}
如果用户在 MainPage 上并在 SessionTimeOut 之后请求“SecondPage”,则 returnUrl 应该是“controller/SecondPage”。(OK)
如果用户在 MainPage 上并在 SessionTimeOut 之后请求“addItem”,returnUrl 应该是“controller/MainPage”而不是“controller/addItem”
【问题讨论】:
标签: asp.net-mvc returnurl