Vorrei utilizzare le annotazioni @PreAuthorize per proteggere i metodi nel controller REST di Spring, utilizzando i parametri del metodo, ad es.Come utilizzare @PathVariable per risolvere il nome del parametro in Spring Security?
@RequestMapping("/something/{myParam}")
@PreAuthorize("@security.check(#myParam)")
public String getSomething(@PathVariable("myParam") Integer myParam) {
//...
}
Spring Security ha bisogno di un modo per scoprire i nomi dei parametri in runtime. Quando non ci sono simboli di debug nella classe compilata, è necessario aggiungere un'annotazione speciale @P o @Param di Spring Data. Così, il metodo sarà simile a questa:
@RequestMapping("/something/{myParam}")
@PreAuthorize("@security.check(#myParam)")
public String getSomething(@PathVariable("myParam") @P("myParam) Integer myParam) {
//...
}
E 'possibile in qualche modo suggerimento Primavera di sicurezza da utilizzare per @PathVariable invece ed evitare annotazioni aggiuntive come @P?
Secondo the documentation, la lettura dei nomi dei parametri dalle annotazioni viene effettuata da AnnotationParameterNameDiscoverer
che può essere personalizzata per supportare l'attributo valore di qualsiasi annotazione specificata. Tuttavia, non sono riuscito a trovare alcuna informazione su come personalizzare.
BTW, sto usando Java 7 e Spring Security 3.2.9.
quale versione di spring-core usi? –
@RomanSandarkin 4.1.6.RELEASE – pkalinow
grazie. Sembra che abbia trovato una soluzione) –