陷入重定向循环

本文关键字:循环 重定向 | 更新日期: 2023-09-27 18:25:45

如果用户的状态为0,我在基本控制器中有一块代码要重定向到页面。

if (UserService.IsLoggedIn())
{
    model.IsLoggedIn = true;
    model.CurrentUser = UserService.GetCurrentUser();
    model.UserProfile = svc.GetByUserId(model.CurrentUser.Id);
    if (model.UserProfile.OnboardStatus == 0)
    {
        HttpContext.Response.Redirect("/user/onboard/"+ model.UserProfile.Id);
    }
}

我陷入了重定向循环,我不确定如何修复它。

陷入重定向循环

这是因为您也从BaseController继承了UserController

解决方案1:不要从BaseController继承UserController

解决方案2

我推测您在BaseController中的OnActionExecuting中有这部分代码。

如果是这样,你可以更新你的代码如下。

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
        if (UserService.IsLoggedIn())
        {
            model.IsLoggedIn = true;
            model.CurrentUser = UserService.GetCurrentUser();
            model.UserProfile = svc.GetByUserId(model.CurrentUser.Id);
            var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();
            var actionName = filterContext.ActionDescriptor.ActionName.ToLower();
            if (controllerName != "user" && actionName != "onboard" && model.UserProfile.OnboardStatus == 0)
            {
                HttpContext.Response.Redirect("/user/onboard/"+ model.UserProfile.Id);
                }
            }
}