스프링 MVC 애플리케이션에서 사용자 인증을 위해 스프링 보안을 사용하고 있습니다. 스프링 보안의 잘못된 구성 또는 버그로 인한 것일 수있는 매우 이상한 행동을 발견했습니다. 어느 것이 있는지 알아내는 데 도움이 필요합니다.또 다른 스프링 보안 문제
누군가가이 질문을 "스프링 보안 로그 아웃 뒤로 버튼"과 같은 질문으로 표시하기 전에 한 가지 중요한 점은이 문제는 로그 아웃 후 동작과 아무런 관련이 없음을 의미합니다. 모든 것은 여기에 하나의 사용자 세션 동안 발생합니다!
그래서 모든 사용자에게 표시되는 페이지와 관리자에게만 표시되는 페이지가 있습니다. home.jsp
은 모든 사용자에게 표시되며 내 spring-security.xml
에 default-target-url
입니다. users.jsp
페이지 (모든 사용자 목록)는 admin에게만 표시되는 것으로 가정합니다.
이제 간단한 시나리오 :
- 가 같은 사용자에서 응용 프로그램을
- 로그를 시작하고
users.jsp
단지 관리자가보고 얻을 수있는 모든 사용자가 페이지로 - 이동을 볼 수 있습니다
home.jsp
페이지로 리디렉션 액세스가 거부되었습니다 (괜찮습니다) - 다른 페이지로 이동
- 뒤로 버튼과
users.jsp
페이지가 나타나고 관리자가 로그인되어있는 것을 볼 수도 있지만 앱을 시작한 이후 관리자로 로그인 한 적이 없습니다 !!!<http auto-config="true" use-expressions="true"> <intercept-url pattern="/essays/auth/login" access="permitAll"/> <intercept-url pattern="/essays/auth/logout" access="permitAll"/> <intercept-url pattern="/essays/auth/denied" access="hasRole('ROLE_USER')"/> <intercept-url pattern="/" access="hasRole('ROLE_USER')"/> <intercept-url pattern="/essays/main/user/home" access="hasRole('ROLE_USER')"/> <intercept-url pattern="/essays/main/user/list" access="hasRole('ROLE_ADMIN')"/> <intercept-url pattern="/essays/main/user/add" access="hasRole('ROLE_ADMIN')"/> <intercept-url pattern="/essays/main/user/{userId}/edit" access="hasRole('ROLE_ADMIN')"/> <intercept-url pattern="/essays/main/user/delete" access="hasRole('ROLE_ADMIN')"/> <form-login login-page="/essays/auth/login" authentication-failure-url="/essays/auth/login?error=true" default-target-url="/essays/main/user/home" always-use-default-target="true"/> <access-denied-handler error-page="/essays/auth/denied"/> <logout invalidate-session="true" logout-success-url="/essays/auth/login" logout-url="/essays/auth/logout"/> </http> <authentication-manager> <authentication-provider user-service-ref="customUserDetailsService"> <password-encoder hash="md5"/> </authentication-provider> </authentication-manager>
어떤 아이디어 :
이 내 spring-security.xml
이다 (I는 <sec:authentication property="principal.username" />
를 사용하여 모든 JSP 페이지에 누가 로그인있어 볼 수 있습니다)? 이 버그입니까? 아니면 끔찍한 일을하고있는 중입니까?
. 그런 다음 다시 시도하십시오. 문제가 지속되면, 지정한 전체 플로우에 대해 Spring Security 로그를 첨부하십시오. –
캐시를 지우면 문제가 해결되었습니다. 이제 나는 바보 같아. 정말 고맙습니다. –
@RobWinch 제발, 내가 그것을 받아 들일 수 있도록 대답 해주세요. 어쩌면 그것은 프로그래밍을 배우는 데 어려움을 겪고있는 다른 누군가를 도울 것입니다. –