В моем весеннем конфигурационном файле у меня есть <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 оценивается и работает правильно. Если я добавлю PreAuthorize в метод getUnitImage, то он не будет оценен, и я вхожу в метод просто отлично. Вот метод, по которому @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 Security 3.0.3