[java] Apache Shiro에서의 세션 간 공유 정보
Apache Shiro는 자바 기반의 보안 및 인증/인가 프레임워크로서, 세션 관리 기능을 제공합니다. 이러한 세션 관리 기능을 사용할 때, 종종 세션 간에 공유할 정보가 필요한 경우가 있습니다. 이번 블로그 포스트에서는 Apache Shiro에서 세션 간 공유 정보를 관리하는 방법에 대해 알아보겠습니다.
Session.setAttribute()
를 사용하여 공유 정보 설정하기
Apache Shiro의 Session
인터페이스에는 setAttribute()
메서드가 있습니다. 이 메서드를 사용하여 세션 객체에 속성(공유 정보)을 설정할 수 있습니다. 아래의 예제 코드를 살펴보겠습니다.
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
// 현재 사용자의 세션 가져오기
Session session = SecurityUtils.getSubject().getSession();
// 공유 정보 설정
session.setAttribute("userId", 12345);
session.setAttribute("username", "John Doe");
위의 코드에서는 setAttribute()
메서드를 사용하여 세션에 “userId”와 “username”이라는 이름의 속성을 설정하였습니다. 이제 다른 부분에서 세션에 저장된 이러한 공유 정보를 사용할 수 있습니다.
Session.getAttribute()
를 사용하여 공유 정보 가져오기
세션에 저장된 공유 정보를 가져오기 위해서는 Session
인터페이스의 getAttribute()
메서드를 사용합니다. 아래의 예제 코드를 참고해보세요.
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
// 현재 사용자의 세션 가져오기
Session session = SecurityUtils.getSubject().getSession();
// "userId" 속성 가져오기
Long userId = (Long) session.getAttribute("userId");
// "username" 속성 가져오기
String username = (String) session.getAttribute("username");
위의 코드에서는 getAttribute()
메서드를 사용하여 “userId”와 “username”이라는 이름의 속성을 가져와서 변수에 저장하였습니다.
주의사항
- 세션에 저장하는 정보의 크기는 적절하게 관리해야 합니다. 불필요한 정보를 너무 많이 저장하면 메모리 사용량이 증가하고 성능 저하를 초래할 수 있습니다.
- 세션은 기본적으로 메모리에 저장되기 때문에, 클러스터 환경에서는 세션 공유를 위한 추가 설정이 필요할 수 있습니다. 이에 대해서는 Apache Shiro의 문서를 참조하세요.
참고 자료:
이제 Apache Shiro에서 세션 간 공유 정보를 관리하는 방법에 대해 알게 되었습니다. 이러한 기능을 적절히 활용하여 보안 및 인증/인가 관련 작업을 보다 효과적으로 처리할 수 있습니다.