Spring MVC, Spring Security, доступ к страницам, управляемый базой данных - PullRequest
1 голос
/ 17 августа 2011

Я использую Spring MVC 3.0.5 и Spring Security 3.1.0RC2.Я получил аутентификацию Active Directory для работы на моем сайте, и базовый <security:intercept-url /> XML работает для фильтрации, кто может получить доступ к какой странице.Теперь я хочу добавить что-то, чтобы вместо просмотра XML-кода для доступа к странице я хотел проверить базу данных.Сайт, который я создаю, должен позволять администраторам изменять, какие группы могут получать доступ к каким страницам, поэтому мне нужно сделать это через базу данных.Любое руководство будет с благодарностью.

Ответы [ 3 ]

0 голосов
/ 17 августа 2011

Защита страниц довольно проста - пусть Spring Security сделает это за вас. В вашем контроллере просто аннотируйте. Или:

@Secured("ROLE_SOME_ROLE")
@Controller
public class MySecuredController {
    @RequestMapping("/foo")
    public String myHander() {
       ...
    }
}

или

@Controller
public class MyController {
    @Secured("ROLE_SOME_ROLE")
    @RequestMapping("/foo")
    public String mySecuredHander() {
       ...
    }
}
0 голосов
/ 17 августа 2011

Вы можете реализовать пользовательский PermissionEvaluator , который запрашивает вашу базу данных. Затем используйте аннотацию @PreAuthorize для методов вашего контроллера, передавая «имя страницы» пользовательскому PermissionEvaluator, чтобы он мог использовать его в запросе к базе данных.

0 голосов
/ 17 августа 2011

Вы можете использовать базу данных для управления этим, используя это в конфигурации

 <authentication-manager>
    <authentication-provider>
      <jdbc-user-service data-source-ref="dbDataSource"/>
    </authentication-provider>
  </authentication-manager>

где db Data Source - это компонент данных базы данных

Пока база данных имеет таблицы аутентификации, Spring ищет их по умолчанию, но вы также можете настроить другие параметры. т.е. Полномочия пользователя я предполагаю, что вы уже используете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...