У меня проблемы с использованием Spring Security в моем приложении Grails.Я установил плагин spring-security-core, а затем выполнил команду для первоначальной настройки:
s2-quickstart my.package ReUser ReRole
, где ReUser и ReRole - мои классы домена пользователя и роли соответственно.Затем я продолжил следовать инструкциям по установке на экране Simplified Spring Security Питера Ледбрука, но когда я действительно попытался запустить приложение и аутентифицировать пользователя, у меня возникли проблемы.Имена пользователей, которые я создал в Bootstrap, никогда не распознавались (с исключением BadCredentialsException), и это было, если бы я никогда не сохранял значения классов User, Role и join.Но они были сохранены, а количество сохраненных значений установлено в Bootstrap.Кроме того, соответствующие классы были правильно определены в Config.groovy как:
grails.plugins.springsecurity.userLookup.userDomainClassName = 're.sec.ReUser'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 're.sec.ReUserReRole'
grails.plugins.springsecurity.authority.className = 're.sec.ReRole'
Эти результаты оставляли меня в замешательстве, пока я не заметил следующую последовательность в своих журналах:
web.FilterChainProxy Converted URL to lowercase, from: '/index.gsp'; to: '/index.gsp'
web.FilterChainProxy Candidate is: '/index.gsp'; pattern is /**; matched=true
web.FilterChainProxy /index.gsp at position 1 of 8 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'
context.HttpSessionSecurityContextRepository No HttpSession currently exists
context.HttpSessionSecurityContextRepository No SecurityContext was available from the HttpSession: null. A new one will be created.
web.FilterChainProxy /index.gsp at position 2 of 8 in additional filter chain; firing Filter: 'MutableLogoutFilter'
web.FilterChainProxy /index.gsp at position 3 of 8 in additional filter chain; firing Filter: 'RequestHolderAuthenticationFilter'
web.FilterChainProxy /index.gsp at position 4 of 8 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter'
web.FilterChainProxy /index.gsp at position 5 of 8 in additional filter chain; firing Filter: 'RememberMeAuthenticationFilter'
web.FilterChainProxy /index.gsp at position 6 of 8 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter'
authentication.AnonymousAuthenticationFilter Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken@9055c2bc: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null; Granted Authorities: ROLE_ANONYMOUS'
web.FilterChainProxy /index.gsp at position 7 of 8 in additional filter chain; firing Filter: 'ExceptionTranslationFilter'
web.FilterChainProxy /index.gsp at position 8 of 8 in additional filter chain; firing Filter: 'FilterSecurityInterceptor'
intercept.FilterSecurityInterceptor Public object - authentication not attempted
web.FilterChainProxy /index.gsp reached end of additional filter chain; proceeding with original chain
access.ExceptionTranslationFilter Chain processed normally
context.HttpSessionSecurityContextRepository SecurityContext is empty or anonymous - context will not be stored in HttpSession.
context.SecurityContextPersistenceFilter SecurityContextHolder now cleared, as request processing completed
Выполните эти действия (в частности, «SecurityContext является пустым или анонимным - контекст не будет сохранен в HttpSession», все, что отображается во время процесса начальной загрузки), объясните, почему мое приложение не распознает имена / пароли пользователей, которые я пытаюсь сохранить во времяBootstrap?Что я делаю не так?