1

表示する要素のリストを返す Hibernate リクエストがあります。現在のユーザーが返された各要素を表示できるかどうかを確認する必要があります。私はそれをこのようなものにすることができます

for (Element e : elements) { 
    SecurityUtils.getSubject().hasPermission("element:view:" + e.id);   
}

ただし、このコードは各要素ごとにデータベースへの x リクエストを生成します。したがって、チェックの速度は O(n) になります。

ソリューションを改善するにはどうすればよいですか? 速度 O(1) を取得することは可能ですか?

4

3 に答える 3

2

サブジェクトがすべての権限を持っている場合にisPermittedAll(String ...)返される、サブジェクトで呼び出されるメソッドがあります。true

参照: http://shiro.apache.org/static/current/apidocs/org/apache/shiro/subject/Subject.html#isPermittedAll%28java.lang.String...%29

ただし、正直なところ、db クエリの点でどれだけ効率的かはわかりません (仮にあったとしても)。

于 2012-05-16T03:48:50.673 に答える
0

shiro はキャッシングをサポートしているため、このリストの作成が多い場合は、このタイプのアクションに使用できます。 http://shiro.apache.org/caching.html

于 2012-05-25T10:27:49.357 に答える