Почему user.getRole () установлен как GrantedAuthority в этом примере аутентификации Spring 3.0? - PullRequest
2 голосов
/ 08 августа 2010

Я пытаюсь понять аутентификацию Spring 3.0.

В коде ниже, почему user.getRole() установлено как GrantedAuthority?

public final UserDetails loadUserByUsername(final String username)
{
    final List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
    UserAccount user = (UserAccount) memcacheService.get(username);

    if (user == null)
    {
        final Query query = entityManager.createQuery("SELECT u FROM UserAccount u WHERE username = :username");
        query.setParameter(USERNAME, username);

        try
        {
            user = (UserAccount) query.getSingleResult();

            memcacheService.put(username, user, Expiration.byDeltaSeconds(DEFAULT_EXPIRATION));
        }
        catch (NoResultException e)
        {
            return null;
        }
    }

    authorities.add(new GrantedAuthorityImpl(user.getRole()));

    return new EnhancedUser(user.getUsername(), user.getEmail(), user.getDisplayName(), user.getPassword(), user
        .getSalt(), user.isEnabled(), user.isAccountNonExpired(), user.isCredentialsNonExpired(), user.isAccountNonLocked(),
        authorities);
}

1 Ответ

3 голосов
/ 09 августа 2010

В версии 3.0 объект UserDetails должен поддерживать права доступа в виде списка реализаций GrantedAuthority.Если требуется некоторая сложная или нестандартная обработка ролей, разработчики приложений должны написать свою собственную реализацию GrantedAuthority.Но в большинстве случаев полномочия просто основаны на ролях, определенных как String, поэтому стандартная весенняя защита обеспечивает простую реализацию по умолчанию реализации на основе ролей String GrantedAuthority, которая равна GrantedAuthorityImpl.

Надеюсь, это то, что вы хотели знать, вопрос немного неясен.

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