@Postfilter がトリガーされていません。
私のコントローラーには2つの方法があります。listJson メソッドは list1 メソッドを呼び出してすべてのプロジェクトを取得し、それらを json 形式で返します。プロジェクトをフィルタリングするための list1 メソッドに @Postfilter があり、フィルターがトリガーされていません。
問題は構成ではありません。テスト目的のため、 @Postfilter を listJson メソッドに配置してみましたが、トリガーされます。この件で私を助けていただけますか?私は非常に感謝されます。
@RequestMapping(produces = "application/json")
@ResponseBody
public String listJson(HttpServletRequest request, HttpServletResponse response) {
List<Project> items = list1(request, response, Project.class);
return JsonHelper.toJsonArray(items, request.getContextPath());
}
@PostFilter("hasPermission(filterObject, 'read')")
private List<Project> list1(HttpServletRequest request, HttpServletResponse response, Class<Project> clazz) {
Integer[] ia = WebHelper.getDojoGridPaginationInfo(request);
Integer firstResult = ia[0];
Integer lastResult = ia[1];
Entry<String, String> orderBy = WebHelper.getDojoJsonRestStoreOrderBy(request.getP arameterNames());
Where where = WebHelper.FromJsonToFilterClass(request.getParamet er("filter"));
List<Project> items = JpaHelper.findEntries(firstResult, lastResult - firstResult + 1, orderBy, where, clazz);
Integer totalCount = JpaHelper.countEntries(where, clazz).intValue();
WebHelper.setDojoGridPaginationInfo(firstResult, lastResult, totalCount, response);
return items;
}
webmvc-config.xml
<security:global-method-security pre-post-annotations="enabled" proxy-target-class="true">
<security:expression-handler ref="expressionHandler"/>
</security:global-method-security>
<bean id="myPermissionEvaluator" class="org.springframework.security.acls.AclPermis sionEvaluator">
<constructor-arg ref="aclService" />
</bean>
<bean id="expressionHandler" class="org.springframework.security.access.express ion.method.DefaultMethodSecurityExpressionHandler" >
<property name="permissionEvaluator" ref="myPermissionEvaluator"/>
</bean>