From 6a9f1f9887ec5983da5c20b4d8b788929d7b1b32 Mon Sep 17 00:00:00 2001 From: Troy Dai Date: Tue, 9 Aug 2016 11:15:40 -0700 Subject: [PATCH] Honor AuthenticationProperties.RedirectUri in CookieAuthenticationHandler --- .../CookieAuthenticationHandler.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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); } }