spring security로 session timeout 시점에 특정 액션을 취하게 가능한가요?

2,711 views
Skip to first unread message

Hwa Joon Lee

unread,
Aug 30, 2013, 12:55:09 AM8/30/13
to ks...@googlegroups.com
 다들 더운데 건강 잘 챙기고 계신지 모르겠네요.
 
다름이 아니고 spring security에서 session timeout 시점에 특정 액션을 취하게 하는게 가능한지 여쭤보려구요.
 
할려고 하는것은 로그인한 사용자가 로그아웃한 시점을 db에 남기려하는 것인데
 
로그아웃핸들러를 이용해서 등록해놓고 보니
 
세션타임 아웃이나 브라우저가 그냥 닫히는 경우 등이 예외로 남더라구요.
 
어떻게 하는게 가장 베스트한 방법이 될런지 방향이라도 제시해주신다면
 
무지한 저로썬 감사할따름입니다.
 
질문읽어주셔서 감사하구요 건강하시길 바랍니다.

YongHyuk Lee

unread,
Aug 30, 2013, 1:11:48 AM8/30/13
to ks...@googlegroups.com
Cache를 세션하고 연동시켜서 Cache가 사라질때 이벤트 리스너를 등록하는 방법은 어떨까요..?
( 하지만.. 사용자가 많은 시스템일경우 서버에 필요없는 부하를 주게 될듯 해서.. 권장사항은 아닌듯 합니다. )

infinispan의 Cache Event notification 에 이런 anotation이 존재합니다.
@CacheEntryRemoved

ehcache에도 있군요..
  • an Element expires, either because timeToLive or timeToIdle have been reached.



2013년 8월 30일 오후 1:55, Hwa Joon Lee <loveb...@gmail.com>님의 말:

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
http://groups.google.com/group/ksug에서 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com/groups/opt_out을(를) 방문하세요.



--
-----------------------------------------------

권기범

unread,
Aug 30, 2013, 1:14:17 AM8/30/13
to ks...@googlegroups.com
마침 비슷한 요구사항을 얼마 전에 받아서 처리한 적이 있습니다.

HTTP 프로토콜의 특성상 서버 입장에서 브라우저가 닫히는 시점을 알 수 있는 방법은 없는 걸로 알구요
(만약에 가능하다면 저도 무지무지 알고 싶습니다~)

세션타임아웃을 적절히 짧게 잡아놓고 HttpSessionListener 를 등록하고 sessionDestroyed 메소드를 구현하는 방식으로 처리했습니다.

이 때 주의할 점이 있는데요 스프링 시큐리티는 default로 로그인이 성공하면 새로운 세션을 만들어서 migration하기 때문에
겉으로 보기엔 로그인, 즉 세션이 생성되는 시점에 SessionDestroyedEvent가 발생해서 sessionDestroyed 메소드가 실행됩니다.

진짜로 타임아웃이나 로그아웃처럼 세션이 만료되는 경우와 구분하기 위한 별도의 장치도 필요하단 이야기죠^^;
Reply all
Reply to author
Forward
0 new messages