회원가입용 사용자 Profile 공유 기능 추가
This commit is contained in:
parent
ee7bd19bb8
commit
e28f925d34
@ -1,23 +1,16 @@
|
|||||||
package nlib.cmm.session;
|
package nlib.cmm.session;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import javax.servlet.annotation.WebListener;
|
import javax.servlet.annotation.WebListener;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import javax.servlet.http.HttpSession;
|
|
||||||
import javax.servlet.http.HttpSessionEvent;
|
import javax.servlet.http.HttpSessionEvent;
|
||||||
import javax.servlet.http.HttpSessionListener;
|
import javax.servlet.http.HttpSessionListener;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.security.core.context.SecurityContext;
|
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
|
||||||
|
|
||||||
import nlib.user.service.LoginService;
|
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
|
||||||
import nlib.user.service.impl.LoginServiceImpl;
|
|
||||||
import nlib.util.StringUtil;
|
import nlib.util.StringUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,8 +44,10 @@ public class SessionConfig implements HttpSessionListener {
|
|||||||
private static final String DELIMITER = "\t";
|
private static final String DELIMITER = "\t";
|
||||||
|
|
||||||
/* 세션별 로그인 처리 가능한 정보 목록 */
|
/* 세션별 로그인 처리 가능한 정보 목록 */
|
||||||
private static final Map<String, String> sessions = new ConcurrentHashMap<>();
|
private static final Map<String, String> loginSessions = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
/* 세션별 회원가입 처리 가능한 정보 목록 */
|
||||||
|
private static final Map<String, OAuthUniversalUser> memberSessions = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sessionCreated(HttpSessionEvent se) {
|
public void sessionCreated(HttpSessionEvent se) {
|
||||||
@ -61,12 +56,27 @@ public class SessionConfig implements HttpSessionListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sessionDestroyed(HttpSessionEvent se) {
|
public void sessionDestroyed(HttpSessionEvent se) {
|
||||||
log.debug("Session sessionDestroyed (X) : " + se.getSession().getId());
|
String sessionId = se.getSession().getId();
|
||||||
if(sessions.get(se.getSession().getId()) != null){
|
log.debug("Session sessionDestroyed (X) : " + sessionId);
|
||||||
removeLoginInfo(se.getSession().getId());
|
if(loginSessions.get(sessionId) != null){
|
||||||
|
removeLoginInfo(sessionId);
|
||||||
|
}
|
||||||
|
if(memberSessions.get(sessionId) != null){
|
||||||
|
removeNewMemberInfo(sessionId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 지방문화원 해당 세션에 로그인 처리 가능한 SNS유형 및 SNSID 정보를 저장한다.
|
||||||
|
*
|
||||||
|
* @param sessionId
|
||||||
|
* @param snsType
|
||||||
|
* @param snsId
|
||||||
|
*/
|
||||||
|
public static void setLoginInfo(String sessionId, String snsType, String snsId) {
|
||||||
|
log.debug("setLoginInfo : " + sessionId + ", " + snsType + ", " + snsId);
|
||||||
|
loginSessions.put(sessionId, StringUtil.getString(snsType, "NONE") + DELIMITER + StringUtil.getString(snsId, "NONE"));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 지방문화원 해당 세션에 로그인 처리 가능한 SNS 유형 및 SNS ID 정보를 리턴한다.
|
* 지방문화원 해당 세션에 로그인 처리 가능한 SNS 유형 및 SNS ID 정보를 리턴한다.
|
||||||
@ -81,7 +91,7 @@ public class SessionConfig implements HttpSessionListener {
|
|||||||
|
|
||||||
if(StringUtil.isEmpty(sessionId)) return null;
|
if(StringUtil.isEmpty(sessionId)) return null;
|
||||||
|
|
||||||
String loginInfo = sessions.get(sessionId);
|
String loginInfo = loginSessions.get(sessionId);
|
||||||
if(StringUtil.isEmpty(loginInfo)) return null;
|
if(StringUtil.isEmpty(loginInfo)) return null;
|
||||||
|
|
||||||
String ret[] = loginInfo.split(DELIMITER);
|
String ret[] = loginInfo.split(DELIMITER);
|
||||||
@ -91,18 +101,6 @@ public class SessionConfig implements HttpSessionListener {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 지방문화원 해당 세션에 로그인 처리 가능한 SNS유형 및 SNSID 정보를 저장한다.
|
|
||||||
*
|
|
||||||
* @param sessionId
|
|
||||||
* @param snsType
|
|
||||||
* @param snsId
|
|
||||||
*/
|
|
||||||
public static void setLoginInfo(String sessionId, String snsType, String snsId) {
|
|
||||||
log.debug("setLoginInfo : " + sessionId + ", " + snsType + ", " + snsId);
|
|
||||||
sessions.put(sessionId, StringUtil.getString(snsType, "NONE") + DELIMITER + StringUtil.getString(snsId, "NONE"));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 지방문화원 해당 세션에 로그인 처리 가능한 정보를 삭제한다.
|
* 지방문화원 해당 세션에 로그인 처리 가능한 정보를 삭제한다.
|
||||||
* (로그인 처리 완료 후 또는 세션 종료 시, 삭제)
|
* (로그인 처리 완료 후 또는 세션 종료 시, 삭제)
|
||||||
@ -113,9 +111,46 @@ public class SessionConfig implements HttpSessionListener {
|
|||||||
*/
|
*/
|
||||||
public static void removeLoginInfo(String sessionId) {
|
public static void removeLoginInfo(String sessionId) {
|
||||||
if(StringUtil.isNotEmpty(sessionId)){
|
if(StringUtil.isNotEmpty(sessionId)){
|
||||||
sessions.remove(sessionId);
|
loginSessions.remove(sessionId);
|
||||||
log.debug("removeLoginInfo > sessionId = " + sessionId);
|
log.debug("removeLoginInfo > sessionId = " + sessionId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 지방문화원 해당 세션에 회원가입 처리 가능한 SNS유형 및 SNS 프로파일 정보를 저장한다.
|
||||||
|
*
|
||||||
|
* @param sessionId
|
||||||
|
* @param snsType
|
||||||
|
* @param snsId
|
||||||
|
*/
|
||||||
|
public static void setNewMemberInfo(String sessionId, OAuthUniversalUser oUser) {
|
||||||
|
log.debug("setLoginInfo : " + sessionId + ", " + oUser.getSnsId());
|
||||||
|
memberSessions.put(sessionId, oUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 지방문화원 해당 세션에 회원가입 처리 가능한 SNS 유형 및 SNS 프로파일 정보를 리턴한다.
|
||||||
|
*
|
||||||
|
* @param sessionId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static OAuthUniversalUser getNewMemberInfo(String sessionId) {
|
||||||
|
if(StringUtil.isEmpty(sessionId)) return null;
|
||||||
|
return memberSessions.get(sessionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 지방문화원 해당 세션에 회원가입 처리 가능한 정보를 삭제한다.
|
||||||
|
* (회원가입 처리 완료 후 또는 세션 종료 시, 삭제)
|
||||||
|
*
|
||||||
|
* @param sessionId
|
||||||
|
* @param snsType
|
||||||
|
* @param snsId
|
||||||
|
*/
|
||||||
|
public static void removeNewMemberInfo(String sessionId) {
|
||||||
|
if(StringUtil.isNotEmpty(sessionId)){
|
||||||
|
memberSessions.remove(sessionId);
|
||||||
|
log.debug("removeNewMemberInfo > sessionId = " + sessionId);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user