2

セッション識別子(SID)のみを使用してセッションを取得するにはどうすればよいですか?私はgae-sessionsを使用しています。

応答の更新@DavidUnderhill:

私はあなたが提案したことをしました、しかしデバッグモードで私はこれを手に入れました: Session: SID=None {} |しかしそれはdb_key文字列で埋められました。

これが私のコードです:

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

存在しません。

そしてこれは私のクッキーからの私のSIDです:

"mMumLZOCq5knTg9edaSjLD + p8xsSohAQSS9vyqpgDso = 1289155992_9c2c85c6931a7d133f7e1f0b9ae25502gAJ9cQB9cQEoVQ5hY2NvdW50LmxvZ2dlZHECiFUIdXNlci5rZXlxA1UjYWd0MGIzUjBlWE4zYjNKc1pISUxDeElFVlhObGNoaTNBUXdxBFULYWNjb3VudC5rZXlxBVUnYWd0MGIzUjBlWE4zYjNKc1pISU9DeElIUVdOamIzVnVkQmkyQVF3cQZVDWFjY291bnQuZW1haWxxB1UBdHEIdYZxCS4 ="

これをJavaScriptとFlexを使用してCookieから取得し、変数としてPythonに送信します。

4

1 に答える 1

2

SID のみを使用してセッションを取得するには、Sessionクラスを直接インスタンス化します。

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

セッション ID のみを使用してセッションを取得する場合は、そのセッションがデータストアまたは memcache に永続化されている必要があります。デフォルトでは、gae-sessionsは小さなセッションのみを安全な Cookie に保存します。これは、memcache やデータストアよりもはるかに高速です。

特定のセッションを強制的にデータストアに保存するにはsave(persit_even_if_using_cookie=True)、セッション オブジェクトを呼び出します。これにより、通常は Cookie にのみ保存される場合でも、データストア/memcache に強制的に保存されます。これは、SID だけでユーザー セッションにときどきアクセスするだけでよい場合に最適な方法です。

SID でセッションに頻繁にアクセスする必要がある場合は、設定時に に渡して Cookie のみのメカニズムを無効にするcookie_only_threshold=0ことSessionMiddlewareをお勧めします。これにより、Cookie が使用されず、セッションが常にデータストアにあることが保証されます。

これらの詳細とその他の詳細については、gae-sessions のドキュメントで詳しく説明されています。

于 2010-10-30T20:41:33.407 に答える