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:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user