Memorise la connexion avec un cookie persistant

This commit is contained in:
2026-04-15 22:35:27 +02:00
parent c92df9a8f0
commit 0db95ee6ec
2 changed files with 9 additions and 2 deletions

View File

@@ -119,6 +119,9 @@
<p class="auth-modal-copy"> <p class="auth-modal-copy">
L'authentification se fait maintenant directement dans l'application, sans redirection vers une page externe. L'authentification se fait maintenant directement dans l'application, sans redirection vers une page externe.
</p> </p>
<p class="auth-modal-copy">
La connexion reste memorisee sur ce navigateur pendant 30 jours.
</p>
<div class="auth-modal-switch"> <div class="auth-modal-switch">
<button class="@BuildModeButtonClass(AuthMode.Login)" type="button" @onclick="SwitchToLogin" disabled="@IsSubmitting">Se connecter</button> <button class="@BuildModeButtonClass(AuthMode.Login)" type="button" @onclick="SwitchToLogin" disabled="@IsSubmitting">Se connecter</button>

View File

@@ -42,10 +42,12 @@ builder.Services
{ {
options.Cookie.Name = "chesscubing.auth"; options.Cookie.Name = "chesscubing.auth";
options.Cookie.HttpOnly = true; options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
options.Cookie.SameSite = SameSiteMode.Lax; options.Cookie.SameSite = SameSiteMode.Lax;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest; options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
options.Cookie.MaxAge = TimeSpan.FromDays(30);
options.SlidingExpiration = true; options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromDays(7); options.ExpireTimeSpan = TimeSpan.FromDays(30);
options.Events = new CookieAuthenticationEvents options.Events = new CookieAuthenticationEvents
{ {
OnRedirectToLogin = context => OnRedirectToLogin = context =>
@@ -526,6 +528,7 @@ static string? NormalizeOptionalValue(string? value, string fieldName, int maxLe
static async Task SignInAsync(HttpContext httpContext, KeycloakUserInfo userInfo) static async Task SignInAsync(HttpContext httpContext, KeycloakUserInfo userInfo)
{ {
var issuedAt = DateTimeOffset.UtcNow;
var claims = new List<Claim>(); var claims = new List<Claim>();
if (!string.IsNullOrWhiteSpace(userInfo.Subject)) if (!string.IsNullOrWhiteSpace(userInfo.Subject))
@@ -567,7 +570,8 @@ static async Task SignInAsync(HttpContext httpContext, KeycloakUserInfo userInfo
{ {
IsPersistent = true, IsPersistent = true,
AllowRefresh = true, AllowRefresh = true,
ExpiresUtc = DateTimeOffset.UtcNow.AddDays(7), IssuedUtc = issuedAt,
ExpiresUtc = issuedAt.AddDays(30),
}); });
httpContext.User = principal; httpContext.User = principal;