как остановить бесконечное перенаправление после успешного входа в систему

В моем приложении grails используется Spring Security (Acegi). Пользователи могут войти на /login. после успешного выполнения перенаправляется на /. если кто-то сейчас пытается вернуться к URL-адресу /login, браузер сообщает: «бесконечное перенаправление, запрос никогда не может быть завершен». в контроллере login действие login, которое показывает представление входа в систему, содержит некоторый код

if (isLoggedIn()) {
  redirect uri: '/'
  return
}

но это (и все действие) не выполняется при одном ударе /login и входе в систему.

SecurityConfig объявляет

/login/**=ROLE_ANONYMOUS

Есть советы, как остановить перенаправление?


person skurt    schedule 28.06.2010    source источник


Ответы (1)


Вам не нужен ROLE_ANONYMOUS, поскольку у аутентифицированных пользователей его не будет, это просто фальшивая роль, которую получают неаутентифицированные пользователи. Вместо этого используйте IS_AUTHENTICATED_ANONYMOUSLY. Это означает отсутствие аутентификации, аутентификацию через куки-файл "запомнить меня" или аутентификацию через форму входа (то есть всех пользователей).

person Burt Beckwith    schedule 28.06.2010
comment
Большое спасибо!!! Это нормально работает. Я думал, что роли организованы иерархически? ROLE_ANONYMOUS ‹ROLE_USER - person skurt; 29.06.2010
comment
Есть поддержка иерархических ролей, но вы должны определить иерархию - см. Раздел 10.12 в документы - person Burt Beckwith; 29.06.2010