如果用户会话超时,我正在尝试在我的 BaseController 中使用 OnActionExecuting 来处理重定向到登录屏幕。但是,即使在我登录之前,它也会导致无限重定向-任何人都可以建议如何解决这个问题吗?
所以在我的基本控制器中,我有以下内容:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (SessionManager.Instance().GetUser() == null)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary {
{ "Controller", "Home" },
{ "Action", "LogOn" }
});
}
base.OnActionExecuting(filterContext);
}
所以基本上我有一个可以获取/设置用户等的会话管理器类 - 我知道问题在于 GetUser 也将为空,因为它仅在验证 LogOn 后使用我的 SetUser 方法设置。
但不是让我的其他控制器中的每个方法都进行如下检查:
public ActionResult SomeOtherMethod()
{
if(SessionManager.Instance().GetUser() != null)
{
//Go Do Useful View stuff
}
else
{
//Redirect To Logon
}
}
我想在基本控制器中使用 OnActionExcuting。但是因为它在 LogOn 页面上运行(因为它应该)我得到无限重定向,因为 GetUser 将始终为空?
有没有更好的方法来做到这一点