3

스프링 웹 보안 및 스프링 보안 3.2를 사용하여 개발 된 웹 응용 프로그램이 있습니다. 나는 평범한 서비스를 위해 http 기본 인증을 사용하고 다른 부분을 위해 로그인 인증을 사용하기를 원한다. 다음은 내 보안 구성입니다 :스프링 보안, http 기본 또는 폼 로그인 인증

<http pattern="/services/**" create-session="stateless" use-expressions="true"> 
    <intercept-url pattern="/**" access="hasRole('ROLE_REMOTE,ROLE_USER')"/> 
    <http-basic /> 
</http> 

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern="/static/**" access="permitAll" /> 
    <intercept-url pattern="/**" access="hasRole('ROLE_USER')" /> 
    <form-login login-page="/login.do" always-use-default-target="true"  default-target-url="/main.do" /> 
    <logout invalidate-session="true" logout-success-url="/login.do" 
     logout-url="/j_spring_security_logout" /> 
</http> 

I가 기대하는 것 (이 인증 된 이후) 기본 인증을 통과하지 않고 양식에서 사용자 로그인 후는 편안한 서비스를 호출 할 때. 내 생각에 역할 'ROLE_USER'를 가진 사용자는 편안한 서비스를 호출해야합니다. 그러나 폼에서 로그인 한 후에 브라우저에서 편안한 서비스를 호출하기 위해 기본 인증을 수행하라는 메시지가 표시되었습니다.

내가 기대 한 것을 얻기 위해 어쨌든 가나 요?

답변

2

대답은 description of the create-session attribute에있을 수 있습니다 :

  • never

    이 - 봄 보안 세션을 생성하지 않습니다,하지만 응용 프로그램이하는 경우 하나의 사용을 만들 것입니다.
  • stateless - 스프링 보안은 세션을 생성하지 않고 스프링 인증을 얻기 위해 세션을 무시합니다.

stateless을 선택 했으므로 양식 로그인이 무시 된 후 auth 개체가 세션에 유지됩니다. never이 예상대로 작동하면 시도하십시오.

+0

감사합니다. –

+1

양식 기반 로그인의 세션이 만료 된 경우에도 사용자가 HTTP 401 Unauthorized 응답을받는 문제를 해결하려면 어떻게합니까? 이렇게하면 브라우저가 기본 인증 대화 상자를 표시합니다. – lanoxx