2

Недавно я использую базовую аутентификацию Spring Security для моих служб REST.Весна Безопасность Основная проверка подлинности происходит только один раз

Ниже конфигурация XML безопасности:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:security="http://www.springframework.org/schema/security" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security.xsd"> 

    <security:http pattern="/rest/**" create-session="never" use-expressions="true"> 
     <security:http-basic /> 
     <security:intercept-url pattern="/rest/auth/**" access="isAuthenticated()"/> 
    </security:http> 

    <security:authentication-manager alias="authenticationManager"> 
     <security:authentication-provider> 
      <security:user-service> 
       <security:user name="admin" password="admin" authorities="ROLE_ADMIN"/> 
      </security:user-service> 
     </security:authentication-provider> 
     <security:authentication-provider user-service-ref="userDetailsService"> 
      <security:password-encoder hash="sha-256" /> 
     </security:authentication-provider> 
    </security:authentication-manager> 

    <security:global-method-security jsr250-annotations="enabled" pre-post-annotations="enabled"/> 
</beans> 

рамка Spring и Spring Security, которые я использую:

<springframework.version>4.1.0.RELEASE</springframework.version> 
<spring.security.version>3.2.5.RELEASE</spring.security.version> 

Я карта моего REST услуги URL с префиксом "отдыхом /", и когда я сначала обратитесь к URL-адресу, браузер предложит имя пользователя и пароль для базовой проверки подлинности. Я заполняю его правильными учетными данными, и мой контроллер успешно прошел доступ.

Однако, если я попытаюсь снова обратиться к тому же URL-адресу с браузером, он не будет снова запрашивать поле имени пользователя и пароля базовой проверки подлинности и напрямую обращаться к URL-адресу.

Я ожидаю, что браузер всегда запрашивает у меня базовую аутентификацию, потому что я никогда не устанавливал атрибут create-session.

Итак, я что-то упустил?

ответ

1

Браузер кэширует учетные данные. Иногда очистка кеша не помогает. Единственный надежный способ подделать его - использовать окно инкогнито Chrome (Ctrl + N). Но одно приглашение на одно окно инкогнито. Поэтому вам нужно новое окно инкогнито, если вы хотите снова ввести их.

Это единственный способ проверить ручную проверку подлинности вручную.

+0

Я попробовал его не используя «никогда» и «без гражданства» и до сих пор, окно инкогнито только один раз подскажите как для значения. Спасибо чувак. –

0

Из javadoc для создания сессии. Я думаю, что ваше приложение создает сеансы и этот сеанс используется.

Атрибут: create-session Управляет стремлением, с помощью которого сеанс HTTP создается классами Spring Security. Если не установлено, значения по умолчанию
на "ifRequired". Если используется «stateless», это означает, что приложение гарантирует, что он не будет создавать сеанс. Это отличается от использования «никогда», что означает, что Spring Security будет не создавать сеанс, но будет использовать один, если приложение делает.

Тип данных: строка Перечислимые Значения: - ifRequired - всегда - никогда не - без гражданства

Вы должны попробовать использовать

"без гражданства"

вместо

никогда не

+0

все еще не работает со значением «без гражданства» :(. –

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

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