- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
@Postfilter 没有被触发。
我的 Controller 中有两种方法。 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>
最佳答案
如果 list1 方法与 listJson 位于同一类/实例上,则当您处理类内的方法时,不会调用安全建议。
但是,如果您要将 list1 方法移动到注入(inject)的服务类,您将拥有一个遵守注释的建议对象。
编辑我想让这一点更清楚 - 所以我添加了一个图表,希望能够更清楚地解释这一点
/mapping -> Project.listJson(HttpServletRequest, HttpServletResponse) |
|
|
|
---------------------
| listJson |
| |---------|
| | |
| | | list1
| | |
| | |
| | |
| | |
| list1 |<--------|
| |
| |
---------------------
/mapping -> Project.listJson(HttpServletRequest, HttpServletResponse) |
|
|
|
---------------------
| listJson |<--------------------------------|
| svc.list1 |--------->advised(Service) | run @PostFilter
| | | |
| | | list1 |
--------------------- | |
| |
--------------------- | |
| Service | | |
| list1 |<--------| |
| | |
| |---------------------------------|
---------------------
关于java - Spring Security @Postfilter 没有被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14956648/
这是我的实体类: class ModelEntity { List list; ... } 现在我想发布过滤器返回的对象并仅返回列表包含“某物”的对象。这可能吗?如果是,该怎么做?我相信它必须
我在我的项目中使用 Spring Boot、Spring Security Oauth 和 Spring Security,这是一个返回 ResponseEntity<> 的 REST 服务器。来自它
@Postfilter 没有被触发。 我的 Controller 中有两种方法。 listJson方法调用list1方法来获取所有项目并以json格式返回它们。我在 list1 方法上有一个 @Pos
我们刚刚从 2.0.8 迁移到 Spring Security 3.0.8(可以升级到最新版本 3.2.X因为我们的核心 spring 库仍在 3.0.X 上,我们计划稍后在业务允许时升级)。 我知道
我正在使用 ABAC 模型来保护对项目中某些实体的访问。根据https://dzone.com/articles/simple-attribute-based-access-control-with-
作为 Spring 安全注释的新手,我需要对以下代码进行说明。 @PostFilter("hasPermission(filterObject, 'READ') or hasRole('ROLE_AD
这是我面临的情况。 我正在从 SOLR 4 迁移到 SOLR 7。SOLR 4 在 Tomcat 8 上运行,SOLR 7 在内置 Jetty 9 上运行。最大的核心包含大约 1,800,000 个文
我是一名优秀的程序员,十分优秀!