
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.takensoft.common.util;
import jakarta.servlet.http.HttpSession;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author : takensoft
* @since : 2025.03.21
* @modification
* since | author | description
* 2025.03.21 | takensoft | 최초 등록
*
* 세션 로그인 방식의 유틸리티
*/
@Component
public class SessionUtil {
private final Map<String, HttpSession> sessionMap = new ConcurrentHashMap<>();
/**
* @param mbrId - 사용자 Id
* @param newSession - HTTP 세션
*
* 기존 세션 있으면 강제 로그아웃
*/
public synchronized void registerSession(String mbrId, HttpSession newSession) {
HttpSession oldSession = sessionMap.get(mbrId);
if (oldSession != null && oldSession != newSession) {
oldSession.invalidate();
}
sessionMap.put(mbrId, newSession);
}
/**
* @param mbrId - 사용자 Id
*
* 로그아웃
*/
public void removeSession(String mbrId) {
HttpSession session = sessionMap.get(mbrId);
if (session != null) {
session.invalidate(); // 세션 무효화
}
sessionMap.remove(mbrId); // 이후 맵에서 제거
}
/**
*
* 전체 로그아웃
*/
public void invalidateAllSessions() {
for (HttpSession session : sessionMap.values()) {
if (session != null) {
session.invalidate();
}
}
sessionMap.clear(); // 전체 초기화
}
}