0

名前空間以外にデータを分割する手法はありますか? ユーザーのグループごとにデータを分割する必要がありますが、一部の管理者ユーザーは、全員のすべてのデータと名前空間のブロックを表示する必要があります。

4

2 に答える 2

1

祖先の道を試しましたか?これは、まったく同じ理由で名前空間の代わりに使用するものです。また、グループ化する必要のあるデータのフォルダーとして機能するエンティティも追加します。たとえば、Subscriberエンティティがあり、Subscriberの子であるUsersというラベルを追加しました。サブスクライバーの特定のインスタンスに属するすべてのユーザーエンティティは、そのユーザーラベルに追加されます。サブスクライバーの祖先クエリを使用して、サブスクライバー、ラベル、およびユーザーエンティティを含むすべてのエンティティを返すことができます。

https://developers.google.com/appengine/docs/python/datastore/entities#Ancestor_Paths

于 2012-08-29T18:25:52.380 に答える
1

各名前空間に独自の管理者がいるマルチテナント アプリがあります。しかし、あなたと同じように、どの名前空間にもアクセスでき、名前空間管理者が実行できるすべての手順を実行できるスーパー管理者が必要です。

そのため、名前空間ごとに 1 つの管理エンティティを作成しましたが、空の名前空間にスーパー管理エンティティを作成しました。そのため、デフォルトの (空の) 名前空間を使用してグローバル エンティティを格納します。これにより、スーパー管理者を探す前に名前空間を空に設定するだけでよく、元の名前空間を慎重に設定する必要があります。

YourHandler(RequestHandler):
    original_ns=namespace_manager.get_namespace()
    namespace_manager.set_namespace("")

    #Look for Super Admin Here
    ...
    # Return to original ns
    namespace_manager.set_namespace(original_ns)

もちろん、私はこの種のセキュリティ コードをデコレータに入れ、すべてのアプリケーションで再利用しますが、上記のコードの方が理解しやすいです。

于 2012-08-29T19:02:41.037 に答える