diff --git a/src/Microsoft.AspNetCore.Authentication.Cookies/CookieAuthenticationHandler.cs b/src/Microsoft.AspNetCore.Authentication.Cookies/CookieAuthenticationHandler.cs index b147181af4..528e11c85b 100644 --- a/src/Microsoft.AspNetCore.Authentication.Cookies/CookieAuthenticationHandler.cs +++ b/src/Microsoft.AspNetCore.Authentication.Cookies/CookieAuthenticationHandler.cs @@ -311,14 +311,24 @@ namespace Microsoft.AspNetCore.Authentication.Cookies Response.Headers[HeaderNames.CacheControl] = HeaderValueNoCache; Response.Headers[HeaderNames.Pragma] = HeaderValueNoCache; Response.Headers[HeaderNames.Expires] = HeaderValueMinusOne; + if (shouldRedirectToReturnUrl && Response.StatusCode == 200) { + CookieRedirectContext redirectContext = null; + var query = Request.Query; var redirectUri = query[Options.ReturnUrlParameter]; - if (!StringValues.IsNullOrEmpty(redirectUri) - && IsHostRelative(redirectUri)) + if (!StringValues.IsNullOrEmpty(redirectUri) && IsHostRelative(redirectUri)) + { + redirectContext = new CookieRedirectContext(Context, Options, redirectUri, properties); + } + else if (!string.IsNullOrEmpty(properties.RedirectUri) && IsHostRelative(properties.RedirectUri)) + { + redirectContext = new CookieRedirectContext(Context, Options, properties.RedirectUri, properties); + } + + if (redirectContext != null) { - var redirectContext = new CookieRedirectContext(Context, Options, redirectUri, properties); await Options.Events.RedirectToReturnUrl(redirectContext); } }