Поставщик Spring Security и Custom Authentication - PullRequest
1 голос
/ 08 сентября 2011

У меня есть пользовательский AuthenticationProvider, который просто возвращает объект Authentication для метода authenticate.То, что я хочу сделать, это добавить роль пользователю, когда он входит в систему. Это для демонстрационных целей, поэтому все, что я хочу, это чтобы пользователь ввел имя пользователя и впустил его. Мне нужно назначить ему роль администратора.

1 Ответ

4 голосов
/ 09 сентября 2011

Есть, конечно, несколько способов достичь этого. Мой предпочтительный вариант - сделать это на заказ UserDetailsService. Единственный метод - loadUserByUsername, который возвращает экземпляр UserDetails. Когда вы создаете свой UserDetails, вы можете добавить все, что захотите GrantedAuthority.

Итак, сначала вы объявите свой пользовательский UserDetailsService в файле конфигурации контекста приложения:

<bean id="myCustomUDS" class="com.myapp.AppUDS" />

<sec:authentication-manager alias="authenticationManager">
   <sec:authentication-provider user-service-ref="myCustomUDS">
   </sec:authentication-provider>
</sec:authentication-manager>

Затем вы пишете сам класс:

public class AppUDS implements UserDetailsService {
    public UserDetails loadUserByUsername(String username)
            throws UsernameNotFoundException, DataAccessException {
        //create your concrete UserDetails
        //add your custom role (i.e. GrantedAuthority) to that object (that will be added to all users)
        //return it
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...