mirror of
https://github.com/chylex/Minecraft-Phantom-Panel.git
synced 2025-05-31 07:34:03 +02:00
Optimize web identity middleware to only run on login and logout pages
This commit is contained in:
parent
1c2c32c2e6
commit
205b1f0697
Server/Phantom.Server.Web.Identity
@ -32,7 +32,7 @@ public static class PhantomIdentityExtensions {
|
|||||||
public static void UsePhantomIdentity(this IApplicationBuilder application) {
|
public static void UsePhantomIdentity(this IApplicationBuilder application) {
|
||||||
application.UseAuthentication();
|
application.UseAuthentication();
|
||||||
application.UseAuthorization();
|
application.UseAuthorization();
|
||||||
application.UseMiddleware<PhantomIdentityMiddleware>();
|
application.UseWhen(PhantomIdentityMiddleware.AcceptsPath, static app => app.UseMiddleware<PhantomIdentityMiddleware>());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ConfigureIdentity(IdentityOptions o) {
|
private static void ConfigureIdentity(IdentityOptions o) {
|
||||||
@ -60,9 +60,9 @@ public static class PhantomIdentityExtensions {
|
|||||||
o.ExpireTimeSpan = TimeSpan.FromDays(30);
|
o.ExpireTimeSpan = TimeSpan.FromDays(30);
|
||||||
o.SlidingExpiration = true;
|
o.SlidingExpiration = true;
|
||||||
|
|
||||||
o.LoginPath = "/login";
|
o.LoginPath = PhantomIdentityMiddleware.LoginPath;
|
||||||
o.LogoutPath = "/logout";
|
o.LogoutPath = PhantomIdentityMiddleware.LogoutPath;
|
||||||
o.AccessDeniedPath = "/login";
|
o.AccessDeniedPath = PhantomIdentityMiddleware.LoginPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ConfigureAuthorization(AuthorizationOptions o) {
|
private static void ConfigureAuthorization(AuthorizationOptions o) {
|
||||||
|
@ -5,6 +5,14 @@ using Phantom.Server.Web.Identity.Authentication;
|
|||||||
namespace Phantom.Server.Web.Identity;
|
namespace Phantom.Server.Web.Identity;
|
||||||
|
|
||||||
sealed class PhantomIdentityMiddleware {
|
sealed class PhantomIdentityMiddleware {
|
||||||
|
public const string LoginPath = "/login";
|
||||||
|
public const string LogoutPath = "/logout";
|
||||||
|
|
||||||
|
public static bool AcceptsPath(HttpContext context) {
|
||||||
|
var path = context.Request.Path;
|
||||||
|
return path == LoginPath || path == LogoutPath;
|
||||||
|
}
|
||||||
|
|
||||||
private readonly RequestDelegate next;
|
private readonly RequestDelegate next;
|
||||||
|
|
||||||
public PhantomIdentityMiddleware(RequestDelegate next) {
|
public PhantomIdentityMiddleware(RequestDelegate next) {
|
||||||
@ -14,10 +22,10 @@ sealed class PhantomIdentityMiddleware {
|
|||||||
[SuppressMessage("ReSharper", "UnusedMember.Global")]
|
[SuppressMessage("ReSharper", "UnusedMember.Global")]
|
||||||
public async Task InvokeAsync(HttpContext context, INavigation navigation, PhantomLoginManager loginManager) {
|
public async Task InvokeAsync(HttpContext context, INavigation navigation, PhantomLoginManager loginManager) {
|
||||||
var path = context.Request.Path;
|
var path = context.Request.Path;
|
||||||
if (path == "/login" && context.Request.Query.TryGetValue("token", out var tokens) && tokens[0] is {} token && await loginManager.ProcessTokenAndGetReturnUrl(token) is {} returnUrl) {
|
if (path == LoginPath && context.Request.Query.TryGetValue("token", out var tokens) && tokens[0] is {} token && await loginManager.ProcessTokenAndGetReturnUrl(token) is {} returnUrl) {
|
||||||
context.Response.Redirect(navigation.BasePath + returnUrl);
|
context.Response.Redirect(navigation.BasePath + returnUrl);
|
||||||
}
|
}
|
||||||
else if (path == "/logout") {
|
else if (path == LogoutPath) {
|
||||||
await loginManager.SignOut();
|
await loginManager.SignOut();
|
||||||
context.Response.Redirect(navigation.BasePath);
|
context.Response.Redirect(navigation.BasePath);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user