Не удалось получить доступ к TempData внутри моего HandleUnauthorizedRequest

Я создал свою собственную настройку для AuthorizeAttribute внутри моего веб-приложения asp.net mvc, и чтобы иметь возможность вернуть пользователя на текущий URL-адрес после входа в систему, я пытаюсь сохранить текущий URL-адрес внутри TempData, а затем перенаправить на логин метод действия, как следует-

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if (!_authorize && !filterContext.HttpContext.Request.IsAjaxRequest())
            {
                var viewResult = new RedirectResult("/Account/Login");
                TempData["returnUrl"] = filterContext.HttpContext.Request.Url.PathAndQuery;


                filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;

                filterContext.Result = viewResult;
            }

но кажется, что я не могу ссылаться на TempData в этом случае, потому что приведенный выше код вызовет следующую ошибку: -

Имя «TempData» не существует в текущем контексте.

Кто-нибудь может посоветовать, пожалуйста? Спасибо


person john Gu    schedule 24.10.2014    source источник


Ответы (1)


Попробуйте использовать базу контроллеров,

filterContext.Controller.TempData["returnUrl"] = filterContext.HttpContext.Request.Url.PathAndQuery;

Также TempData может вести себя неожиданно в атрибуте Authorize, поскольку он существует только в одном цикле запроса. Если это так, используйте вместо этого Session.

person ssilas777    schedule 24.10.2014
comment
но в моем случае мне это нужно только внутри перенаправленного метода действия входа в систему... спасибо - person john Gu; 24.10.2014