2012-09-03 4 views
0

세션을 데이터베이스에 저장해야합니다. Robert Fischer (https://github.com/RobertFischer/grails-database-session)의 데이터베이스 세션 플러그인을 버전 1.2.0에서 사용하고 Grails 2.1로 업데이트했습니다. 내 메인 프로젝트에 플러그인을 설치했는데 스프링 보안 코어의 로그 아웃 기능을 제외한 모든 것이 잘 작동한다. 나는 다음과 같은 예외가 봄 보안 로그 아웃 컨트롤러를 통해 로그 아웃 할 때 :데이터베이스 세션 1.2.0이있는 grails 2.1 및 로그 아웃시 스프링 보안 코어

URI: /myProject/j_spring_security_logout 
Class: grails.plugin.databasesession.InvalidatedSessionException 
Message: Session ABD84995E13B9D1AD4DBD228C0E5902C is invalid; cannot access/modify it. 

Screenshot

은 어쩌면 당신은 해결책을 알고이 문제를 해결하려면?

내 환경은 :

Grails 2.1 
Spring Security Core 1.2.7 
grails-database-session 1.2.0 by Robert Fischer (see Github) 
mySQL-Database is connected (JDBC) 
+0

무엇 때문에 Spring이 세션을 무효화 한 다음 그 세션에서 속성을 제거하려고 시도하는 것처럼 보입니다. 디버거를 시작하고 그 원인을 파악할 수 있습니까? –

+0

예. 세션이 무효화 된 후 스프링 보안은 세션에 저장된 FLASH_SCOPE에 액세스하려고합니까? 나는 jiira에서 버그 요청을 제기했다. http://jira.grails.org/browse/GPSPRINGSECURITYCORE-193 – whitenexx

답변

1

이 봄 보안 코어의 버그 : 서블릿 스펙의 위반 무효화 된 세션에 액세스하려고합니다. 그러나 문제가 해결 될 때까지 config.grails.plugin.databasesession.ignoreinvalid 속성을 true으로 설정하면 예외가 발생하지 않습니다.

+0

로그 아웃 한 후에 getAttribute() 메소드가 호출되고이 메소드는 세션을 수행하지 않기 때문에 예외를 throw하는 checkAccess() 메소드를 호출한다. 더 이상 존재하지 않습니다 (이미 무효화되었습니다). 나는 속성 스프링 보안이 확인하고 싶은 것을 확인했다 : 그것은 FLASH_SCOPE이다. (org.codehaus.groovy.grails.FLASH_SCOPE)이 문제를 해결하기 위해 무엇을 선호 하시겠습니까? – whitenexx

+0

그게 사양으로 동작합니다 : https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html - 스프링 보안 버그입니다. 그러나 깨진 라이브러리에 대한 해결 방법이 있습니다. 업데이트 된 답변을 참조하십시오. –