0

I have created my own customization for the AuthorizeAttribute inside my asp.net mvc web application, and to be able to return the user to the current URL after login , i am trying to save the current URL inside a TempData and then redirect to the login action method ,as follow-

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;
            }

but seesm that i can not reference TempData in this case, because the above code will raise the following error:-

The name 'TempData' does not exist in the current context

Can anyone advice please? Thanks

John John
  • 1
  • 72
  • 238
  • 501

1 Answers1

2

Try using controller base,

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

Also TempData may behave unexpectedly in Authorize attribute as it lives only on one request cycle. If so use Session instead.

ssilas777
  • 9,672
  • 4
  • 45
  • 68