Spring Security с переменными параметрами пути

Я хотел бы создать правила безопасности на основе настраиваемых параметров URL (переменных пути ). В примере. Допустим, я хочу, чтобы пользователь имел доступ администратора к ресурсам с именами Brand1 и Brand2, но не имел доступа к ресурсу с именем Brand3. Мы можем редактировать ресурсы, используя следующие ссылки.

http://myapp/brand/edit/1
http://myapp/brand/edit/2
http://myapp/brand/edit/3

теперь в контексте безопасности я хотел бы сделать что-то подобное

 <security:intercept-url pattern="/brand/edit/{brandId}" 
           access="hasRole('ROLE_ADMIN') or
                   @authorizationService.hasBrandPermission(
                   #brandId, principal.username)"/>

Единственное, что я получаю, это имя пользователя. BrandId всегда равен нулю. Раньше я делал это с помощью @PreAuthorize, и это работало, но теперь я хотел бы централизованно настроить безопасность в одном XML-файле, а не распространять его по всем классам контроллеров. Более того, когда я использовал @PreAuthorize, мой обработчик доступа -Denied -не перенаправлял меня на запрещенную страницу, а вместо этого отображал уродливое AccessDeniedException.

Я бы очень признателен за любые идеи.

5
задан Marcin Michalski 1 August 2012 в 10:10
поделиться