Я новичок в Grails, поэтому, вероятно, я делаю что-то неправильно, но, возможно, вы можете помочь мне разобраться в этом. Поэтому у меня есть это простое приложение Grails с плагином Spring Security. Проблема заключается в том, что GSP теги страницы Spring Security не показывает информацию, которую я ожидал, пример сценария:Плагин Grails Spring Security и теги GSP не работают
/basket/placeOrder
Я конечная точка защищена, поэтому, когда я ударил его из браузера он показывает мне страницу входа в систему.я войти, используя правильные учетные данные, и он направляет меня к ожидаемой странице (так выглядит аутентификация успешна)
- Когда в одном из моих контроллеров я использую
println springSecurityService.currentUser.email
печатают корректные данные на консоли. Но тогда я стараюсь использовать на GSP, например:
< sec:ifNotLoggedIn> NOT LOGGED < /sec:ifNotLoggedIn>
Это показывает
NOT LOGGED
. То же самое, если я пытаюсь получить некоторую информацию о пользователе, например,<sec:loggedInUserInfo field="email" />
, она не отображает ни одной строки. Так же, как Spring Security не связывается с GSP.
Я делаю что-то неправильно? Отсутствует какая-то конфигурация? Спасибо.
EDIT
Когда я посмотрел в SecurityTagLib
ifNotLoggedIn
функции, которую он использует springSecurityService.isLoggedIn()
. Когда я вызываю то же самое из контроллера, он возвращает ожидаемый результат. При печати session
как в контроллере и GSP, это все равно:
SPRING_SECURITY_CONTEXT = [email protected]b66c80: Authentication: org.springframew[email protected]46b66c80: Principal: [email protected]: Username: kamil; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_ADMIN; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]43458: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: AAB2217ABEE7EAF752573D44914B0005; Granted Authorities: ROLE_ADMIN
мне удалось запустить мое приложение на отладку, и это становится еще более странно. Сначала моя контрольная точка на контроллере показала объект SpringSecurityService
и имеет значение currentUser
правильно установлено. Затем одна и та же запрошенная по-прежнему обработка ударила мою точку останова, установленную в SecurityTagLib
(grails только после выполнения контроллера потока-> рендеринга), у которой есть ТОЛЬКО такой объект SpringSecurityService (что означает, что это тот же компонент, ни один дубликат и т. Д.), Но он просто отсутствует данные пользователя. Weird!
Что-то должно быть не так, но понятия не имеют, что такое ...