2016-08-01 3 views
3

Я нашел ту же проблему и решение here. Но это решение мне не помогло. Например, вы можете получить here. Как вы можете видеть, пример содержит хорошее описание для выхода из системы на клиенте угловая часть. Но он не обеспечивает обработку выхода на серверную часть. Поэтому я проверил LogoutSuccessHandlerВесна безопасности с AngularJS - выход не работает

authentication.isAuthenticated() == true 

Я пытался использовать некоторые эксперименты, но выход из системы не работает. Пытались:

((UsernamePasswordAuthenticationToken) authentication).eraseCredentials(); 

или

authentication.setAuthenticated(false); 

и .deleteCookies ("JSESSIONID", "XSRF-лексему")

 http.httpBasic().and().authorizeRequests() 
       .antMatchers("/index.html", "/home.html", "/login.html", "/").permitAll().anyRequest() 
       .authenticated().and().csrf() 
       .csrfTokenRepository(csrfTokenRepository()).and() 
       .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class); 
     http.authorizeRequests().anyRequest().authenticated() 
       .and().logout().logoutSuccessHandler(logoutSuccess).deleteCookies("JSESSIONID", "XSRF-TOKEN") 
       .invalidateHttpSession(true).permitAll(); 

результат был тот же. Надеюсь, кто-то может помочь мне в этом вопросе. Благодарю.

+0

Возможно, это не проблема безопасности, как я думал. Это проблема хром-обработчика. Я не знаю, как это происходит, но мой firefox работает правильно, и IE может обработать его в хорошем смысле, но хром имеет утечку или взломать (кажется, так). Вопрос закрыт в целом. Но если кто-то знает, что должно быть исправлено в хроме, пожалуйста, дайте мне знать. (я очистил все файлы cookie в хромированных и кешированных данных, используя _ ** Ctrl + Shift + Del ** _ - это не помогает). – Sergii

+0

Я обнаружил разницу: браузер Chrome содержится в каждом заголовке запроса ** Авторизация: базовый dXNlcjpwYXNzd29yZA == **. возможно, это поможет получить правильный ответ. – Sergii

+0

1up на вопрос –

ответ

3

Уверен, это не проблема безопасности. Это проблема хром-обработчика. Я не знаю, как это происходит, но мой Firefox работает правильно, и IE может обработать его в хорошем смысле.

Я проверил хром настройки и нашел следующий: настройки >>Показать дополнительные настройки ... >>Управление паролями >>Автоматический вход в флаг был повернуть на. Я удалил этот флаг. Проблема не была решена. Я изменил мой логин в application.yml. После перезапуска приложения IE, Firefox продолжения работы как принято (показать домашнюю страницу \ Логин \ выход из системы и так далее), НО Chrome спросил пароль для входа в всплывающем окне (окно было как система), если я не введите здесь login \ password - я не вижу ни одной страницы в chrome (Whitelabel Error Page), но если я включу всплывающее окно, мои учетные данные - у меня есть авторизованный сеанс. Если я нажимаю авторизацию выхода, не исчезают (после перегрузки страницы я могу видеть только данные для авторизованных пользователей).

Так что я думаю, что вопрос закрыт вообще. Но если кто-то знает, что должно быть исправлено в хроме, пожалуйста, дайте мне знать. (я очистил все файлы cookie в хромированных и кешированных данных, используя Ctrl + Shift + Del - это не помогает).

добавить больше деталей Мой пользователя для применения в последний раз был u2. Я переименовал пользователя в application.yml file to u3. Я использовал хром в последний раз с u2, но сервер ничего не знает о пользователе u2.После перезагрузки сервера я попытался загрузить домашнюю страницу с chrome -> чем у меня есть Запрос на аутентификацию всплывающее окно в хром. Журналы сервера вы можете увидеть ниже.

2016-08-02 20:30:35.866 INFO 18404 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring FrameworkServlet 'dispatcherServlet' 
2016-08-02 20:30:35.867 INFO 18404 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet  : FrameworkServlet 'dispatcherServlet': initialization started 
2016-08-02 20:30:35.883 INFO 18404 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet  : FrameworkServlet 'dispatcherServlet': initialization completed in 16 ms 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/css/**' 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/js/**' 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/images/**' 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/**/favicon.ico' 
2016-08-02 20:30:35.901 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/error' 
2016-08-02 20:30:35.902 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 1 of 13 in additional filter chain; firing Filter: 'WebAsyncManagerIntegrationFilter' 
2016-08-02 20:30:35.903 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 2 of 13 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter' 
2016-08-02 20:30:35.903 DEBUG 18404 --- [nio-8080-exec-1] w.c.HttpSessionSecurityContextRepository : No HttpSession currently exists 
2016-08-02 20:30:35.903 DEBUG 18404 --- [nio-8080-exec-1] w.c.HttpSessionSecurityContextRepository : No SecurityContext was available from the HttpSession: null. A new one will be created. 
2016-08-02 20:30:35.906 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 3 of 13 in additional filter chain; firing Filter: 'HeaderWriterFilter' 
2016-08-02 20:30:35.906 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match the requestMatcher org.springframework.se[email protected]2583a7b2 
2016-08-02 20:30:35.907 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 4 of 13 in additional filter chain; firing Filter: 'CsrfFilter' 
2016-08-02 20:30:35.925 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 5 of 13 in additional filter chain; firing Filter: '' 
2016-08-02 20:30:35.935 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 6 of 13 in additional filter chain; firing Filter: 'LogoutFilter' 
2016-08-02 20:30:35.935 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.u.matcher.AntPathRequestMatcher : Checking match of request : '/'; against '/logout' 
2016-08-02 20:30:35.935 DEBUG 18404 --- [nio-8080-exec-1] o.s.security.web.FilterChainProxy  :/at position 7 of 13 in additional filter chain; firing Filter: 'BasicAuthenticationFilter' 
2016-08-02 20:30:35.937 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.a.www.BasicAuthenticationFilter : Basic Authentication Authorization header found for user 'u2' 
2016-08-02 20:30:35.939 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.authentication.ProviderManager  : Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider 
2016-08-02 20:30:35.940 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.a.dao.DaoAuthenticationProvider : User 'u2' not found 
2016-08-02 20:30:35.941 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.a.www.BasicAuthenticationFilter : Authentication request for failed: org.springframework.security.authentication.BadCredentialsException: Bad credentials 
2016-08-02 20:30:35.941 DEBUG 18404 --- [nio-8080-exec-1] s.w.a.DelegatingAuthenticationEntryPoint : Trying to match using RequestHeaderRequestMatcher [expectedHeaderName=X-Requested-With, expectedHeaderValue=XMLHttpRequest] 
2016-08-02 20:30:35.941 DEBUG 18404 --- [nio-8080-exec-1] s.w.a.DelegatingAuthenticationEntryPoint : No match found. Using default entry point org.springframewor[email protected]32c6200d 
2016-08-02 20:30:35.941 DEBUG 18404 --- [nio-8080-exec-1] w.c.HttpSessionSecurityContextRepository : SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession. 
2016-08-02 20:30:35.942 DEBUG 18404 --- [nio-8080-exec-1] s.s.w.c.SecurityContextPersistenceFilter : SecurityContextHolder now cleared, as request processing completed 

Пожалуйста, обратите внимание, я не использовал пользователь u2 в этом запросе, но вы можете увидеть информацию о пользователе в журналах сервера:

2016-08-02 20:30:35.937 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.w.a.www.BasicAuthenticationFilter : Basic Authentication Authorization header found for user 'u2' 
2016-08-02 20:30:35.939 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.authentication.ProviderManager  : Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider 
2016-08-02 20:30:35.940 DEBUG 18404 --- [nio-8080-exec-1] o.s.s.a.dao.DaoAuthenticationProvider : User 'u2' not found 

кажется хром обеспечивает неожиданное поведение. И Example работает правильно без дополнительных изменений.

P.S. Решение для хрома.

Я думаю, что каждый раз, если вы используете хром, вам нужно использовать incognito режим. В режиме инкогнито у вас нет какого-либо маркер для первого запроса, режима инкогнито обеспечивает ожидаемое поведение, как это должно быть без хрома Хаки или обходных.

+2

голосование за ваши исследования –

 Смежные вопросы

  • Нет связанных вопросов^_^