Ana içeriğe geç

İlk yapılandırma

const gate = createGuildGate({
app: {
name: "Discord Panelim",
environment: "production",
baseUrl: "https://panel.example.com",
},
owners: ["123456789012345678"],
locale: {default: "tr"},
security: {
allowedOrigins: ["https://panel.example.com"],
csrfSecret: process.env.GUILDGATE_CSRF_SECRET!,
auditIpSalt: process.env.GUILDGATE_AUDIT_IP_SALT!,
session: {
ttlMs: 12 * 60 * 60_000,
idleTimeoutMs: 30 * 60_000,
rotateAfterMs: 15 * 60_000,
maximumSessionsPerUser: 5,
},
},
stores,
transactions,
telemetry,
audit: {
enabled: true,
redactKeys: ["token", "secret", "authorization"],
failClosedActions: ["guild.billing.update"],
},
reliability: {maximumLateSettlementMs: 5 * 60_000},
});

Production başlangıç korumaları​

Production profili HTTPS olmayan baseUrl, boş veya wildcard origin, loopback/unspecified/mapped-loopback URL, insecure session cookie ve yetersiz secret değerini reddeder. Discord OAuth endpoint ve callback adresleri de HTTPS olmalıdır.

Session sınırı​

Resmi memory, Redis ve PostgreSQL store'ları maximumSessionsPerUser değerini session oluşturma işlemi içinde uygular. Özel paylaşımlı store, create(record, maximumSessionsPerUser) ile atomik create-and-evict davranışı sağlamalıdır.

HTTP adapter'ları süresi dolmuş veya iptal edilmiş session gördüğünde cookie temizleme metadata'sı döndürür.

Reliability ayarı​

maximumLateSettlementMs, response deadline sonrasında reservation ve lease sahipliğinin en fazla ne kadar tutulacağını belirler. Uygulama, destekleyen database ve HTTP istemcilerine context.signal aktarmalıdır.

Fail-closed audit​

failClosedActions içindeki action için audit ve idempotency etkin, transaction gerekli olmalı; audit store aynı transaction'a katılmalıdır.