|
|
@@ -26,19 +26,21 @@ public class LoginRequiredMiddleware
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ context.Response.Headers.CacheControl = "no-store";
|
|
|
if (IsAjaxRequest(context.Request))
|
|
|
{
|
|
|
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
|
|
|
+ context.Response.Headers["X-Login-Required"] = "true";
|
|
|
await context.Response.WriteAsJsonAsync(new
|
|
|
{
|
|
|
success = false,
|
|
|
errorCode = Common.CommonErrorCode.LoginRequired,
|
|
|
- redirectUrl = BuildLoginUrl(context)
|
|
|
+ redirectUrl = "mytel://back"
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- context.Response.Redirect(BuildLoginUrl(context));
|
|
|
+ context.Response.Redirect("mytel://back");
|
|
|
}
|
|
|
|
|
|
private static bool ShouldSkip(HttpContext context)
|
|
|
@@ -60,12 +62,8 @@ public class LoginRequiredMiddleware
|
|
|
private static bool IsAjaxRequest(HttpRequest request)
|
|
|
{
|
|
|
return string.Equals(request.Headers["X-Requested-With"], "XMLHttpRequest", StringComparison.OrdinalIgnoreCase)
|
|
|
+ || string.Equals(request.Headers["Sec-Fetch-Dest"], "empty", StringComparison.OrdinalIgnoreCase)
|
|
|
|| request.Headers.Accept.Any(x => x?.Contains("application/json", StringComparison.OrdinalIgnoreCase) == true);
|
|
|
}
|
|
|
|
|
|
- private static string BuildLoginUrl(HttpContext context)
|
|
|
- {
|
|
|
- var returnUrl = $"{context.Request.PathBase}{context.Request.Path}{context.Request.QueryString}";
|
|
|
- return "/Login?returnUrl=" + Uri.EscapeDataString(string.IsNullOrWhiteSpace(returnUrl) ? "/" : returnUrl);
|
|
|
- }
|
|
|
}
|