MVC Owin-Cookie-Authentifizierung - ReturnUrl-Generierung überschreiben

Ich habe eine MVC-Anwendung, die die Owin-Cookie-Authentifizierung verwendet. Ich habe SlidingExpiration aktiviert und arbeite. Wenn jedoch das Login eines Benutzers abläuft und er an den LoginPath zurückgesendet wird, gibt mir der ReturnUrl einige Probleme:

Ich möchte nur, dass die ReturnUrl eingeschlossen wird, wenn sie auf eine GET-Aktion verweist.nich eine POST-Aktion.Ich möchte PathAndQuery anstelle von Path einfügen, damit ich alle Elemente, die der Benutzer möglicherweise in einem Formular ausgefüllt hat, erneut ausfüllen kann.

Ich habe versucht, mein eigenes AuthorizeAttribute (Code unten) zu erstellen und es auf einige der Methoden in einem meiner Controller anzuwenden, aber es scheint, als würde es nie getroffen, wenn die Sitzung abgelaufen ist.

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

Ein Antwort auf eine verwandte Frage gibt an, dass ein benutzerdefiniertes AuthorizeAttribute der "Standard [Lösung] ist, wenn Sie dieses Verhalten überschreiben möchten", aber ich kann es scheinbar nicht zum Funktionieren bringen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage