Etherpad-lite: Übertragen Sie die SessionID von einer Domain zu einer anderen

Erstellt am 19. Juni 2020  ·  6Kommentare  ·  Quelle: ether/etherpad-lite

Hallo allerseits! Irgendwelche Ideen, wie ich die sessionID von einer Domäne in eine andere übertragen und in das Client-Cookie schreiben kann?

Domainnummer 1 - allgemeine Seite
Domainnummer 2 - Etherpad

Es gibt ein ep_auth_session- Plugin, aber es funktioniert in meinem Fall nicht (_Sie haben keine Berechtigung, auf dieses Pad zuzugreifen_), da ich die folgenden Einstellungen verwende:

{
  "ip": "127.0.0.1",
  "trustProxy": true,
  "requireSession": true
}

plus proxy_pass

Question

Alle 6 Kommentare

Ich vermute, dass vor Ort eine Logik besteht, die bei der ersten Sitzung die Sitzungs-ID an das Etherpad sendet. Ein Plugin in Etherpad wäre erforderlich.

@JohnMcLear von Domain Nummer 1, wir können keine Cookies auf Domain Nummer 2 setzen

Cookies müssen direkt auf Domainnummer 2 gesetzt werden

Gibt es ein solches Plugin oder muss es entwickelt werden?

Es muss entwickelt werden. Sehen Sie, wie ich Cookies in ep_what_have_i_missed setze

Es muss entwickelt werden. Sehen Sie, wie ich Cookies in ep_what_have_i_missed setze

https://github.com/ether/ep_what_have_i_missed 404 nicht gefunden

Wir haben so etwas. In unserem Fall haben wir eine Hauptseite, die ein Iframe ist, der den Etherpad-Editor umschließt.
Ich weiß nicht, ob das bei Ihnen der Fall ist, wenn ja, können diese Ausschnitte helfen.

Nachricht per PostMessage aus dem Wrapper senden

Window.postMessage(message, '*')

API-Aufrufe von außen abhören (Etherpad-Plugin)

var _listenToAPICallsToSetSessionOnCookie = function() {
  // listen to outbound calls of this API
  window.addEventListener('message', function(e) {
      ... check the content of 'e'
      setSessionOnCookie(e.data.sessionID, e.data.expires)
    }
  });
}

Fügen Sie die Sitzungs-ID hinzu (Etherpad-Plugin)

var setSessionOnCookie = function(sessionID, expires) {
  var existingSessionIDs = getSessionID(); // get existent sessions id
  var sessionIDAlreadyStored = existingSessionIDs.indexOf(sessionID) !== -1;

  if (!sessionIDAlreadyStored) {
    // need to append new session id to the end of existing list
    var allSessionIDs = existingSessionIDs.length ? existingSessionIDs + ',' : '';
    allSessionIDs += sessionID;

    // include expiration, if provided
    var expiration = expires ? ';expires=' + (new Date(expires).toUTCString()) : '';

    document.cookie = 'sessionID=' + allSessionIDs + expiration + ';secure';
  }
}

Weitere Informationen zur postMessage-API
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen