스프링 보안을 사용하여 웹 애플리케이션을 개발했습니다. 로그인의 경우 LDAP에서 액세스 권한을 얻습니다. 이제 스프링 보안 그 자체를 사용하여 세션을 관리하고 싶습니다. authentication.getName()
을 사용하여 볼 수 있습니다. username
을 받고 있는데 sessionID
을 얻을 수도 있습니다.스프링 보안을 이용한 세션 관리 : 동시 세션
이제 동일한 사용자가 다른 브라우저를 사용하여 동일한 시스템에서 로그인을 시도하면 해당 사용자가 이미 자신의 계정에 로그인했다는 메시지를 받아야합니다.
누구나 아이디어를 줄 수 있습니까?
<security:session-management
invalid-session-url="/login.jsp?error=sessionExpired"
session-authentication-error-url="/login.jsp?error=alreadyLogin">
<security:concurrency-control
max-sessions="1"
expired-url="/login.jsp?error=sessionExpiredDuplicateLogin"
error-if-maximum-exceeded="false" />
</security:session-management>
내가 이것을 사용하고 나에게 다음과 같은 오류주는 다른 브라우저 사용하여 로그인을 시도 :
HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
enter code here
이를 배치해야합니다. 플러스 JdbcTokenRepositoryImpl. 이 모든 것을 통해 하나의 브라우저로 로그인합니다. 그런 다음 다른 사람과 다시 로그인합니다. 두 번째 계정이 로그인되어있는 것 같습니다. 제 문제는, 저는 첫 번째 브라우저에서 링크를 클릭하면 다음 예외가 발생합니다. 'Estado HTTP 500 - PreparedStatementCallback; 나쁜 SQL 문법 [persistent_logins에서 삭제 어디 username =?]; [blah blah] : 'gbt.persistent_logins'테이블이 존재하지 않습니다. ' 그리고 테이블은 실제로 DB에서 dissapeared! 누구에게 무슨 일이 일어나고 있는지 아이디어가 있습니까? – kazbeel