Implement stream cookie deletion in logout and account deletion endpoints: add DeleteStreamCookie method to remove the stream cookie upon user logout and account deletion, enhancing security by preventing access to streams after token expiration.

This commit is contained in:
Leonid Pershin
2026-07-24 23:15:08 +03:00
parent 0891b4e6a8
commit 622bf1e440
@@ -134,6 +134,7 @@ public static class AuthEndpoints
await sender.Send(new LogoutCommand(rawToken), cancellationToken); await sender.Send(new LogoutCommand(rawToken), cancellationToken);
response.Cookies.Delete(RefreshCookieName, BuildCookieOptions(request)); response.Cookies.Delete(RefreshCookieName, BuildCookieOptions(request));
DeleteStreamCookie(request, response);
return Results.NoContent(); return Results.NoContent();
} }
@@ -172,6 +173,7 @@ public static class AuthEndpoints
{ {
var result = await sender.Send(new DeleteMyAccountCommand(), cancellationToken); var result = await sender.Send(new DeleteMyAccountCommand(), cancellationToken);
response.Cookies.Delete(RefreshCookieName, BuildCookieOptions(request)); response.Cookies.Delete(RefreshCookieName, BuildCookieOptions(request));
DeleteStreamCookie(request, response);
return result.ToHttpResult(); return result.ToHttpResult();
} }
@@ -195,6 +197,20 @@ public static class AuthEndpoints
SameSite = SameSiteMode.Strict, SameSite = SameSiteMode.Strict,
Path = "/api/auth", Path = "/api/auth",
}; };
/// <summary>Гасит stream-cookie (tw_stream, Path=/api) — иначе после выхода эфир можно смотреть
/// по прямой ссылке ещё до истечения токена.</summary>
private static void DeleteStreamCookie(HttpRequest request, HttpResponse response) =>
response.Cookies.Delete(
"tw_stream",
new CookieOptions
{
HttpOnly = true,
Secure = request.IsHttps,
SameSite = SameSiteMode.Strict,
Path = "/api",
}
);
} }
public sealed record AuthResponseDto( public sealed record AuthResponseDto(