web-dev-qa-db-ja.com

Pyramidでのユーザー認証

Webアプリを作成していて、DjangoとPyramidのどちらかを選択する必要がありました。Pyramidを使用することにしました。

Pyramidには、見栄えのする独自の認証/承認フレームワークが付属していることを理解しています。しかし、ユーザー/グループ/権限が定義されているピラミッドのどこにも見たことがありません。 Djangoではこれらのものは無料で提供されます。

私はSQLAlchemyを使用していますが、インポートできる同様のユーザー/グループ/パーミッションがすでに構築されているかどうか疑問に思っていました。これらのオブジェクト/マッピングとパスワードのハッシュ/ソルトを自分で定義したくありません。

Djangoの定義 これらのうち必要なものはほとんどすべてです。

誰かが私が使用できるものを私に指摘できますか?それとも私は自分で転がす必要がありますか?

41
lostdorje

Pyramidには、はるかに柔軟な認証システムがあります。はい、Djangoのユーザー/グループ/権限の概念のような単純なものが必要な場合は、柔軟性が怖いかもしれません。

Pyramidには「User」オブジェクトがありません。データの保存方法や使用するORMについての仮定がないため、contrib.authのようなものはありません。どちらもPYPIにあるcryptacularやpasslibなどのライブラリを使用して、自分でパスワードをハッシュ/ソルトする必要があります。

Pyramidのシステム内でユーザー/グループ/パーミッションが必要な場合、これは、グループをパーミッションにマップする__acl__を持つRootFactoryを定義することで非常に簡単に実現できます。権限はビューに割り当てられるため、通常はかなり静的です。グループ(Pyramidが「プリンシパル」と呼ぶもの)を動的にしたい場合は、これも実現可能です。

ピラミッド wiki2チュートリアル銃撃戦のデモ をご覧になることをお勧めします。

SQLAlchemyを使用する予定がある場合は、Pyramid内での承認を支援するためのサードパーティパッケージもいくつかあります。 apex はより完全なスタックソリューションであり、 ziggurat_foundations はSQLAlchemyの上の下位層であり、アプリケーションのユーザーとグループの設定に役立ちます。

あなたの質問はかなり高レベルであり、承認は「難しい問題」なので、ここでやめて、ピラミッドチュートリアルからいくつかのサードパーティの例にすでに存在するチュートリアルとリソースを逆流させないようにします。ご不明な点がございましたら、お気軽にご質問ください。

64