1

ピラミッド フレームワークを使用して小さな Web アプリケーションを開発し、統合されたセキュリティ機能を実装しました。リソース オブジェクトを作成し、それを と呼びましょう。Pageすべてのユーザーが適切な権限を持つページを表示および編集できるように、ACL を付与しました。これはすべてうまくいきます。

私の質問は次のとおりです。現在ログインしているユーザーが表示できるすべてのページのリストを作成するピラミッドの適切な方法は何ですか?

アプリケーションは URLDispatch と SQLAlchemy を使用します。

4

2 に答える 2

1

「ピラミッド適切な方法」はありません。データベースに「現在ログインしているユーザーが表示できるすべてのページのリスト」を照会するだけです。

db.query(Page).filter_by(owner=user_id).

およびを介してユーザーおよびデータベース セッションにアクセスする慣用的な方法のPyramid クックブック レシピがあり一見の価値があるかもしれません。request.userrequest.db

于 2013-03-25T21:46:54.597 に答える
0

ACLがデータベースに認識されていない場合は、フィルターを投稿できます....

from pyramid.security import has_permission

def make_permission_filter(request, permission="view"):
    def f(r):
        if r and has_permission(permission, r, request):
            return r
        else:
            return None

(r for r in make_permission_filter(request, permission="view")(db.query(Page).filter_by(owner=user_id)) if r)

もちろん欠点もありますが、それはそれを行う1つの方法です。

于 2013-03-28T22:03:21.340 に答える