質問

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

応答の更新@davidアンダーヒル:

私はあなたが提案したことをしましたが、デバッグモードでこれを手に入れました: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に送信します。

役に立ちましたか?

解決

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

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

セッションIDのみを使用してセッションを取得する場合は、そのセッション しなければならない データストアまたはMemcacheに持続しています。デフォルトでは、 gae-sessions MemcacheまたはDataStoreよりもはるかに高速な安全なCookieに小さなセッションを保存します。

特定のセッションをDataStoreに保存するように強制するには、電話することができます save(persit_even_if_using_cookie=True) セッションオブジェクト上。これにより、通常はCookieにのみ保存される場合でも、DataStore/Memcacheに保存されます。これは、SIDのみがユーザーセッションにたまにアクセスする必要がある場合に最適なアプローチです。

SIDが頻繁にセッションにアクセスする必要がある場合は、合格してCookieのみのメカニズムを無効にする方が良いかもしれません cookie_only_threshold=0SessionMiddleware 構成すると、Cookieが使用されないこと、セッションが常にデータストアにあることが保証されます。

これらの詳細などは、より徹底的に文書化されています Gae-Sessionsドキュメント.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top