私は会社で働いていて、ユーザーがさまざまな種類のデータのCRUDを持っているアプリを開発しています。私たちが知っているように、データは機密性を持つ可能性があります。タイプによって異なります。行レベルのセキュリティ
私の会社では、まず「ロール」の種類が異なります。異なるロールは異なるタイプのデータを見ることができ、ロールのタイプによって異なります。ちょっとうんざりするのは、手動でデータをフィルタリングする必要があるということです。システム上にあるすべてのクエリには、where節があり、ルールは正しく表示されません。私たちはDAOを実行するために休止状態を使用しています。
第2に、私のアプリでは、それは少し異なりますが、同じ目標を持っています。ユーザーはデータを挿入し、データを見ることしかできません。彼が望むときは、すべてのクエリでフィルタが作成されます。私はモッフィアとmongodbを使用しています、私は "ユーザー"によってフィルタリングする必要がありますが、私が探しているドキュメントに依存し、ユーザーは異なるレベルにあります。
例:
- すべての基金のユーザーを持っています。
- すべての取引にはファンドがあります。
私は、次のドキュメント持っているユーザーの資金上場していた場合:
[
{
"value": 1234.23,
"date": "2017-01-01",
"fund": {
"description": "xpto",
"user": {
"login": "Someone"
}
}
}
]
:私は次のドキュメントを持っているユーザーのトランザクションをリストアップしていた場合
[
{
"description": "xpto",
"user": {
"login": "Someone"
}
}
]
を
datastore.find(Fund.class).filter("user.login", getUser().getLogin());
:
だから、資金のクエリで私はこれを持っています取引において:
datastore.find(Transaction.class).filter("funds.user.login", getUser().getLogin());
私はいくつかの研究を行い、私にはそれほど明確ではないいくつかの結果を見つける:
- 行レベルのセキュリティを、休止状態
行レベルのセキュリティで
@Filter in hibernateは、iと同じになりますが、少なくともクラス内にあります。すべてのクエリで、フィルタリングする必要があると言わなければなりません。私の最後の選択です。
私の目標は、現在どのように機能しているのか理解していますか? trelloはカードがユーザーからのものであることをどのように知っていますか?あなたの投稿があなたのものだとFacebookがどのように知っていますか?彼らはどのようにデータセットをフィルタリングしていますか?すべてのクエリでフィルタが正常に実行されますか?彼らはデータベースやアプリケーションでそれをしていますか?