public override async Task Invoke(IOwinContext context) { var shortCircuit = false; if (!context.Request.Uri.IsClientSideRequest()) { // check if we have any errors registered var errors = context.GetExternalLoginProviderErrors(); if (errors != null) { shortCircuit = true; var serialized = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(errors))); context.Response.Cookies.Append(ViewDataExtensions.TokenExternalSignInError, serialized, new CookieOptions { Expires = DateTime.Now.AddMinutes(5), HttpOnly = true, Secure = context.Request.IsSecure }); context.Response.Redirect(context.Request.Uri.ToString()); } } if (Next != null && !shortCircuit) { await Next.Invoke(context); } }