Spring security, почему я продолжаю входить автоматически? - PullRequest
0 голосов
/ 29 мая 2018

Я следовал этому руководству для объединения безопасности Angular и Spring:

Spring Security и Angular

Я могу скопировать / вставить код здесь, но в основном он имеетapp.component.html, который отображает ту или иную роутер-розетку в зависимости от того, вошли мы в систему или нет.

Если вы вошли в систему, на отображаемом компоненте отображается ресурс, загруженный с localhost: 8080 / resource, а если нет, то отображается компонент формы входа.Все работает отлично.Я иду на localhost: 8080 / home, и он отображает форму входа.После входа в систему он отображает ресурс, после выхода из системы он снова отображает форму входа.

Моя проблема в том, что с новым браузером, в котором очищены все файлы cookie, я по-прежнему могу получить доступ к localhost: 8080 / resoure,Хуже того, после этого, если я перейду позже к localhost: 8080 / home, он отображает компонент с ресурсом /, как если бы я вошел в систему. Это похоже на то, что если аутентификация была полностью пропущена, даже конфигурация WebSecurityConfigurerAdapter предотвращает доступ к любому ресурсубез аутентификации:

  http.httpBasic()
  .and()
  .authorizeRequests()
  .antMatchers("/index.html", "/", "/home", "/login").permitAll()
  .anyRequest().authenticated()
  .and()
  .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());

Итак, мой вопрос: что здесь не так?Почему я могу получить доступ к localhost: 8080 / resource, даже если я не аутентифицирован?

Редактировать, протестировано с инкогнито, как предложено в комментарии:

С инкогнито, то же самоеслучается.Только в первый раз я не могу получить доступ к http://localhost:8080/resource. После этого, независимо от того, сколько раз я выйду из системы или перезапущу браузер, я все равно могу получить к ней доступ.Только после очистки всей истории + кеша + куки я теряю доступ к / ресурсу.Согласно учебному пособию:

Если пользователь аутентифицирован, мы показываем ссылку «logout» и подключаем ее к функции logout () в AppComponent.Помните, он отправляет HTTP-запрос POST в «/ logout», который нам теперь нужно реализовать на сервере.Это просто, потому что он уже добавлен для нас Spring Security (то есть нам не нужно ничего делать для этого простого варианта использования).

Читая это, я ожидал бы, что выход из системы POST, которыйЯ вижу, отправляется из браузера, очищает любую аутентификацию для этого сеанса ... это правильно?

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