2

Pyramid の基本認証メカニズムが機能しません。私はそれを間違っていますか?

デバッグするために、ビューの 1 つで次のコード ブロックを実行しました。

print '$$$1', pyramid.security.remember(request, 12)
print '$$$2', pyramid.security.unauthenticated_userid(request)
print '$$$3', pyramid.security.authenticated_userid(request)

これが私が得た出力です:

$$$1 [('Set-Cookie', 'auth_tkt="45a66a6e860356b991cc8fc8acf9bf7f4d8b3d2212!userid_type:int"; Path=/'), ('Set-Cookie', 'auth_tkt="45a66a6e860356b991cc8fc8acf9bf7f4d8b3d2d2!" ユーザー ID/タイプ 2: Domain=127.0.0.1:6543'), ('Set-Cookie', 'auth_tkt="45a66a6e860356b991cc8fc8acf9bf7f4d8b3d2212!userid_type:int"; Path=/; Domain=.127.0.0.1:6543')]

$$$2 なし

$$$3 なし

request.session が機能しているので、問題は Cookie ではないと思います。

__init__Pyramid を構成するために私が使用するコードは次のとおりです。

authn_policy = AuthTktAuthenticationPolicy( 'secret', callback=lambda x:[])
engine = engine_from_config(settings, 'sqlalchemy.')
initialize_sql(engine)
my_session_factory = UnencryptedCookieSessionFactoryConfig('anothersecret')
config = Configurator(settings=settings, session_factory=my_session_factory,
                      authentication_policy=authn_policy,
        )

助けてください!

4

2 に答える 2

4

「remember」はヘッダーを返すだけです。これらのヘッダーを応答に設定する必要があります。Adding Authorization docs のこのセクション、特に 21 行目と 22 行目のすぐ下のコード サンプルも参照してください。

于 2011-03-25T08:17:34.763 に答える
1

あなたはおそらく、私がチュートリアルを読んで、 group_finder /only/ が追加のグループを返すと述べたのと同じ間違いを犯しているでしょう。これは、http: //plope.com/pyramid_auth_design_api_postmortemで参照されている場合とは異なります。

コールバック関数を使用する場合、ユーザーが無効な場合にのみ None を返す必要があります。チュートリアルの例では、列挙されたユーザーに含まれていないユーザーには none が返されます (他のメカニズムを介してユーザーを認証している場合でも)。私自身のコードでは、記憶されたリスト/グループにまだ含まれていないユーザーの場合、空のリスト ( [] ) を明示的に返します。このようにして、パブリック、認証済み、グループベースのアクセス許可の 3 種類のアクセス レベルがあります。

チュートリアルの例に加えて、次のクックブック エントリのセットもあります: http://docs.pylonsproject.org/projects/pyramid_cookbook/dev/authentication.html

于 2011-07-11T21:11:03.243 に答える