JWT- und Session-Validierung verbessert, UI aktualisiert
- JWT-Authentifizierung prüft nun, ob User aktiv und existent ist - Session-Validierung beim App-Start via ValidateSessionAsync - Ungültige Sessions werden entfernt, SignalR-Verbindung getrennt - ApiService und IApiService um ValidateSessionAsync erweitert - LoginViewModel nutzt Session-Check und behandelt SignalR-Fehler - UI für eigene Phrasen auf <Border> mit Stil-Anpassung umgestellt
This commit is contained in:
@@ -4,6 +4,7 @@ using Microsoft.IdentityModel.Tokens;
|
||||
using SlipItIn.Server.Data;
|
||||
using SlipItIn.Server.Hubs;
|
||||
using SlipItIn.Server.Services;
|
||||
using System.Security.Claims;
|
||||
using System.Text;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
@@ -50,6 +51,24 @@ builder.Services
|
||||
context.Token = accessToken;
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
},
|
||||
OnTokenValidated = async context =>
|
||||
{
|
||||
var userIdClaim = context.Principal?.FindFirst(ClaimTypes.NameIdentifier)?.Value;
|
||||
if (!int.TryParse(userIdClaim, out var userId))
|
||||
{
|
||||
context.Fail("Invalid user claim.");
|
||||
return;
|
||||
}
|
||||
|
||||
var dbFactory = context.HttpContext.RequestServices.GetRequiredService<IDbContextFactory<SlipItInDbContext>>();
|
||||
await using var db = await dbFactory.CreateDbContextAsync();
|
||||
|
||||
var userExists = await db.Users.AnyAsync(u => u.Id == userId && u.IsActive);
|
||||
if (!userExists)
|
||||
{
|
||||
context.Fail("User no longer exists or is inactive.");
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user