Безопасность Spring с базой данных и несколькими ролями? - PullRequest
2 голосов
/ 25 апреля 2010

Я пытаюсь сделать приложение, используя Spring 3.0. Теперь я решил попробовать свои силы в весенней безопасности и спящем режиме. Я уже видел, что это можно подкрепить базой данных, и я видел ссылку на определение ваших собственных запросов?

Теперь у меня проблема в том, что учебники, которые я нашел, не слишком ясны и предполагают, что у пользователя может быть только одна роль. Я хочу дать нескольким пользователям несколько ролей.

Итак, я думал о схеме базы данных в следующем виде:

Пользователь:

  • user_id
  • имя пользователя
  • пароль
  • registrationDate

USER_ROLE:

  • user_id
  • role_id

Роль:

  • role_id
  • RoleName

Теперь мне было интересно, есть ли у кого-нибудь ссылки на полезные руководства / советы / комментарии.

Ответы [ 2 ]

8 голосов
/ 25 апреля 2010

Вам необходимо реализовать свои собственные UserDetails (поддерживает несколько ролей для каждого пользователя). Эта пользовательская реализация UserDetails затем возвращается вашей собственной UserDetailsService реализацией, внедренной в ваш daoAuthenticationProvider .

См. Также мой ответ @ Аутентификация базы данных Spring Security 3 с Hibernate для полного примера.

1 голос
/ 26 апреля 2010

Примерно так:

public class CustomUserService implements UserDetailsService {

   private UserDao userDao;

   public CustomUserService(UserDao u) {
      userDao = u;
   }

   public UserDetails loadUserByUsername(String username) {
      CustomUser user = userDao.getUser(username);
      if (user == null)
         throw new UserNotFoundException("User "+username+" does not exist");
      return user;
   }
}

А ваша реализация UserDao представляет собой простой DAO, который может легко использовать аннотации гибернации и назначать несколько ролей для вашего объекта CustomUser. Довольно простой.

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