Аутентификация cookie-файлов MVC Owin - переопределение генерации ReturnUrl

У меня есть приложение MVC, использующее Autin Cookie Authentication. У меня SlidingExpiration включен и работает. Однако, когда срок действия логина пользователя истекает и он отправляется обратно в LoginPath, ReturnUrl вызывает у меня некоторые проблемы:

Я только хочу, чтобы ReturnUrl был включен, если он указывает на действие GET,не действие POST.Я хотел бы включить PathAndQuery вместо просто Path, чтобы я мог повторно заполнить любые элементы, которые пользователь мог заполнить в форме.

Я попытался создать свой собственный AuthorizeAttribute (код ниже) и применить его к некоторым методам в одном из моих контроллеров, но кажется, что по истечении сеанса он никогда не срабатывает.

public class CheckLoginExpirationFilter : AuthorizeAttribute
{
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);

        if (filterContext.Result is HttpUnauthorizedResult)
        {
            string returnUrl = null;
            if (filterContext.HttpContext.Request.HttpMethod.Equals("GET", StringComparison.CurrentCultureIgnoreCase))
                returnUrl = filterContext.HttpContext.Request.Url.GetComponents(UriComponents.PathAndQuery, UriFormat.SafeUnescaped);

            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary()
        {
            { "client", filterContext.RouteData.Values[ "client" ] },
            { "controller", "Security" },
            { "action", "Login" },
            { "ReturnUrl", returnUrl }
        });
        }
    }
}

ответ на связанный вопрос указывает, что пользовательский атрибут AuthorizeAttribute является «стандартным [решением], когда вы хотите переопределить это поведение», но я не могу заставить его работать.

Ответы на вопрос(1)

Ваш ответ на вопрос