Vielleicht bauen wir das Gleiche
obwohl meines nur teilweise headless ist.
Ich vermute, dass es keine gibt, und dass das beabsichtigt ist.
Ich habe mich das Gleiche gefragt, aber ich denke, in meinem Fall wird es in Ordnung sein - ich versuche nicht, Discourse zu verstecken.
Eine Sache, die man bei Benutzer-API-Schlüsseln im Vergleich zu Admin-API-Schlüsseln für alle Benutzer beachten sollte, ist, dass standardmäßig unterschiedliche Ratenbegrenzungen für sie gelten: Available settings for global rate limits and throttling.
Benutzer-API-Ratenbegrenzung:
DISCOURSE_MAX_USER_API_REQS_PER_MINUTE: Standard 20
DISCOURSE_MAX_USER_API_REQS_PER_DAY: Standard 2880
Admin-API-Ratenbegrenzung:
DISCOURSE_MAX_ADMIN_API_REQS_PER_MINUTE: 60
Wenn Ihre Anwendung eine Verbindung zu einer selbst gehosteten Discourse-Site herstellt, können Sie wahrscheinlich die Admin-API-Ratenbegrenzung überschreiben. Wenn Ihre Anwendung eine Verbindung zu gehosteten Discourse-Instanzen herstellt, bieten die Benutzer-API-Ratenbegrenzungen mehr Flexibilität. Mit der Admin-API-Ratenbegrenzung müssen Sie alle Anfragen in eine ratenbegrenzte Warteschlange stellen.
Bearbeitung: Anstatt die User API Keys Specification zum Generieren der Schlüssel zu verwenden, können Sie einen Admin-API-Schlüssel zum Generieren von Benutzer-API-Schlüsseln verwenden. Das umgeht das Problem, dass Benutzer die App genehmigen müssen.
Beachten Sie, dass der unten gepostete Schlüssel für meine localhost-Domain bestimmt ist, sodass kein Risiko besteht, ihn zu posten.
unescaped key params: {key:description:sally} {key:username:sally} {key:scopes:[scope_id:topics:write]} {key:scopes:[key:write]} {key:scopes:[name:write]} {key:scopes:[params:[topic_id]]} {key:scopes:[urls:[/posts (POST)]]} {key:scopes:[selected:true]}
❯ curl -X POST \"http://localhost:4200/admin/api/keys\" \
-H \"Api-Key: $api_key\" \
-H \"Api-Username: system\" \
-H \"Content-Type: application/json\" \
-d $json
{\"key\":{\"id\":29,\"key\":\"f5c6307b51dd2882bde525dc9775fe7504b55c93fa40177b650f9e6b77a9d25b\",\"truncated_key\":\"f5c6\",\"description\":\"sally\",\"last_used_at\":null,\"created_at\":\"2024-06-02T00:44:19.944Z\",\"updated_at\":\"2024-06-02T00:44:19.944Z\",\"revoked_at\":null,\"user\":{\"id\":3,\"username\":\"sally\",\"avatar_template\":\"/user_avatar/127.0.0.1/sally/{size}/58_2.png\"},\"api_key_scopes\":[{\"resource\":\"topics\",\"action\":\"write\",\"parameters\":[\"topic_id\"],\"urls\":[\"/posts (POST)\"],\"allowed_parameters\":{},\"key\":\"write\"}]}}
In beiden Fällen haben Sie einen API-Schlüssel, der irgendwie verwaltet werden muss. Ich gehe davon aus, dass er verschlüsselt und in einer Datenbank gespeichert wird.