【发布时间】:2012-01-30 06:48:12
【问题描述】:
在我的 spring 配置文件中,我有 <global-method-security pre-post-annotations="enabled"/>
在我的春季@Controller 中,我有一个@RequestMapping,上面有一个@PreAuthorize,如下所示:
@PreAuthorize("true == false")
@RequestMapping(value="/image", method=RequestMethod.GET )
@ResponseBody
public ResponseEntity<byte[]> getImage(
@RequestParam(value="imageSet", required=false) Long imageSetKey
, @RequestParam(required=false, defaultValue="70") Integer size
, @RequestParam(required=false) Unit unit
, @RequestHeader( value="if-none-match", required=false ) String etag
)
{
// use the latest and greatest for the unit if they specify the unit, otherwise use the imageSetKey they pass in.
if ( unit != null )
{
return getUnitImage( unit, size, etag );
}
// more code to do other stuff
}
现在这个@PreAuthorize 被评估并正常工作。如果我在 getUnitImage 方法上放置了 PreAuthorize,那么它不会被评估,我可以很好地进入该方法。这是不评估 @PreAuthorize 的方法。
@PreAuthorize("true == false")
public ResponseEntity<byte[]> getUnitImage( Unit unit, int size, String etag )
{
// do stuff, I get into breakpoints here.
}
思考为什么 PreAuthorize 会在一个带有 RequestMapping 的方法上被调用,而不是在同一个类中的其他方法上?
Spring 3.0.5、Spring 安全 3.0.3
【问题讨论】:
标签: java spring spring-security