Frage

Wie kann ich eine Sitzung abrufen nur die Sitzungs-ID verwenden (SID)? Ich verwende gae-Sitzungen .

Update für die Antwort @ David Underhill:

Ich habe getan, was Sie vorgeschlagen, aber im Debug-Modus habe ich dies: Session: SID=None {} | aber es hat db_key mit einer Schnur aufgefüllt.

Hier ist mein Code:

upload.py

SID = self.request.get("SID")
if not SID:
return False

from app.models.user import User
user = User.get_current_user(SID)

user.py

def get_current_user(SID = None):
    if SID:
        session = Session(sid=SID)
    else:
        session = get_current_session()

    if session.has_key('account.logged'):
        return User.get(db.Key(session.get('user.key')))
    else:
        return False

und existiert nicht.

Und das ist mein SID aus meinem Cookie:

  

"mMumLZOCq5knTg9edaSjLD + p8xsSohAQSS9vyqpgDso = 1289155992_9c2c85c6931a7d133f7e1f0b9ae25502gAJ9cQB9cQEoVQ5hY2NvdW50LmxvZ2dlZHECiFUIdXNlci5rZXlxA1UjYWd0MGIzUjBlWE4zYjNKc1pISUxDeElFVlhObGNoaTNBUXdxBFULYWNjb3VudC5rZXlxBVUnYWd0MGIzUjBlWE4zYjNKc1pISU9DeElIUVdOamIzVnVkQmkyQVF3cQZVDWFjY291bnQuZW1haWxxB1UBdHEIdYZxCS4 ="

Ich nehme das von Cookies, JavaScript und Flex, es dann in einem Variablen Python senden.

War es hilfreich?

Lösung

Um eine Sitzung nur seine SID verwendet abrufen, direkt die Session Klasse instanziiert:

session = gaesessions.Session(sid="SID of the session you want")

Wenn Sie eine Sitzung zum Abrufen nur seinen Sitzungs-ID, dann wird diese Sitzung muss hat auf den Datenspeicher oder memcache beibehalten worden. Standardmäßig gae-Sitzungen speichert nur kleine Sitzungen in sicheren Cookies, die viel schneller sind als entweder memcache oder der Datenspeicher.

Um eine bestimmte Sitzung zu zwingen, auf den Datenspeicher gespeichert werden, können Sie save(persit_even_if_using_cookie=True) auf dem Session-Objekt aufrufen. Dies zwingt sie zu dem Datenspeicher gespeichert werden / memcache auch wenn es normalerweise nur in einem Cookie gespeichert werden. Dies ist der beste Ansatz, wenn Sie nur gelegentlich Zugang Benutzersitzungen müssen nach SID allein.

Wenn Sie häufig Zugriff Sitzungen von SID benötigen, dann könnten Sie besser dran, die Cookie-only-Mechanismus zu deaktivieren, indem cookie_only_threshold=0 zum SessionMiddleware vorbei, wenn Sie ihn konfigurieren - dies stellt sicher, dass Cookies verwendet werden, nie, und dass Ihre Sitzungen sind immer im Datenspeicher.

Diese Details und mehr dokumentiert gründlicher in der gae-Sitzungen Dokumentation .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top