3

Beaker Encrypted Cookie セッションを使用する Pyramid アプリケーションがあります。RequestWithUserAttribute、pyramid.security.authenticated_userid()、remember()、forget() を使用してユーザーをログインさせることができます。

ただし、大多数のユーザーは決してログインせず、ユーザーがサイトに指定した Cookie (可能な場合は暗号化) に保存したい特定の値 (ユーザーの場所、またはその問題に関する任意の文字列) があります。 )。

remember() 関数を使用してセッションのプリンシパル以上を設定する方法を見つけることができず、データの暗号化を自分で処理することは言うまでもなく、独自の Set-Cookie ヘッダーを送信したくない.

キーワード引数をremember()に渡すことができることがわかりました:

remember(request, principal, *kw)

しかし、余分な値を送信しようとすると、継続的にエラーが発生します。

理想的には、次のようなものを期待します。

remember(request, 'public', {'location':request.params.get('location')})

これも正しいルートですか?

4

1 に答える 1

3

Pyramid におけるセッションと認証 (および一般的に) は、ばらばらな概念です。認証されたユーザーを「セッション中」に保存する方法を学ぶ人はたくさんいますが、これは決して要件ではありません。セッションのポイントは、リクエスト全体でサイトへの訪問者の任意のデータを保存することです。それは彼らがログインしているという事実かもしれませんし、あなたのランダムな文字列かもしれません.

ポイントは、セッションにランダムなものを保存できることです。Pyramid で (Configurator で session_factory をセットアップした後) 経由で request オブジェクトで直接利用できますrequest.session

request.session['mykey'] = 'some random value'

これには、認証、remember/forget、またはセッション ファクトリ以外のものを使用する必要はありません。

https://docs.pylonsproject.org/projects/pyramid/en/1.2-branch/narr/sessions.html

于 2011-10-05T15:07:25.060 に答える