spring Authentication.setAuthenticated (boolean) java.lang.IllegalArgumentException: невозможно установить этот токен как доверенный - PullRequest
9 голосов
/ 15 ноября 2011

У меня есть следующий код (при попытке программного входа пользователя):

List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new GrantedAuthorityImpl("ROLE_ADMIN"));
...
User tempUser = new User(correctUsername, 
    correctPassword, 
    true, true, true, true, // logging them in...
    authorities // type is List<GrantedAuthority>
);
...
Authentication authentication 
    = new UsernamePasswordAuthenticationToken(tempUser, authorities);
    // I'm using authorities again (List<GrantedAuthority>)
    // is this the right spot for it?
...
// this is the line causing the error
authentication.setAuthenticated(true);

Когда я пытаюсь запустить это, я получаю следующее:

java.lang.IllegalArgumentException: Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead

Обратите внимание, что яЯ использую authorities список GrantedAuthority с обоими объектами User и Authentication.Я не уверен, где я должен их использовать.Я пытаюсь повторить ответ для другого SO вопроса , но сталкиваюсь с исключением, опубликованным выше.Другие подобные вопросы, которые не совсем отвечают на мой вопрос:

После некоторых поисков самый близкий к моему ответу был на форуме на springsource.org , и этот человек использует устаревший метод , но это похожий подход.Как я могу войти в систему пользователя программно?

1 Ответ

13 голосов
/ 15 ноября 2011

Вам не нужно явно вызывать authentication.setAuthenticated(true) (на самом деле, вам не разрешено).Конструктор сделает это за вас.

Однако вы вызываете не тот конструктор.Вы должны звонить:

Authentication authentication 
    = new UsernamePasswordAuthenticationToken(tempUser, password, authorities);

Проверьте Javadoc для UsernamePasswordAuthenticationToken.

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