본문 바로가기
Development/Java

ESAPI 라이브러리에서 getCurrentUser의 세션을 가져오지 못할 때

by 로젠크로와싱 2014. 8. 5.
반응형

ESAPI 라이브러이의 Authenticator 인터페이스를 구현(implements)하여 사용할 때에 getCurrentUser 메소드가 있습니다. 이 메소드는 사용자가 로그인을 하게 되면 세션에 유저정보를 저장하게 되어 있는데, 이 때 저장된 세션을 가져와서 익명의 사용자인지, 로그인 시간이 만료가 되었는지 체크를 해야되는데, 현재 로직상 이상하게도 현재 유저 정보를 Anonymous로 가져오는 버그가 존재하고 있더라구요(물론 현재 제가 수정한 웹에서만 해당될 지도 모릅니다.).

그래서 현재 로그인된 세션을 가져올 수 있도록 코드를 수정하였습니다. reference의 AbstractAuthenticator.java를 수정하셔도 되며, 별도의 java 파일을 만들어서 사용하셔도 됩니다.

수정 전

public User getCurrentUser() {

    User user = currentUser.get();

    if (user == null) {

        user = User.ANONYMOUS;

     }

    return user;

}


수정 후

public User getCurrentUser() {

   User user = null;

   try {

       user = getUserFromSession();

       /*if (user == null || user.isAnonymous()) {

           user = getUserFromRememberToken();

       }*/

       if (user == null || user.isAnonymous()) {

           user = currentUser.get();

       }

       if (user == null) {

           user = User.ANONYMOUS;

       }

   }

   catch (AuthenticationException e) {

       // TODO Auto-generated catch block

   }

   return user;

}


반응형