에서 심 구성 요소를 얻기 위해이 같은 것을 사용할 수 있습니다
주먹이 경우 사용자 로그인 세션 범위에 LoginUserMap
및 LoginUserKeyMap
을 outject.
LoginUserKeyMap
은 시스템 지식 키로 userId를 저장합니다.
예 : 키 USER1, 값 : user120131010154566]
LoginUserMap
사용자 정보리스트에 기록 저장하는 것이다.
예 : 키 user120131010154566, 값 : 오브젝트]
/**
* Bijection Login User Map.
*/
@In(required = false, scope = ScopeType.APPLICATION, value = "loginUserMap")
@Out(required = false, scope = ScopeType.APPLICATION, value = "loginUserMap")
private Map<String, UserInfoBean> loginUserMap;
/**
* Bijection Login User Key Map.
*/
@In(required = false, scope = ScopeType.APPLICATION, value = "loginUserKeyMap")
@Out(required = false, scope = ScopeType.APPLICATION, value = "loginUserKeyMap")
private Map<String, String> loginUserKeyMap;
public void doLogin() {
// Generate User ID Key for duplicate user control.
String key = CommonUtil.convertDateToString(new Date(), KEY_PATTERN);
String userId = getCredentials().getUsername();
String userIdKey = userId + key;
if (getLoginUserMap() == null || getLoginUserKeyMap() == null) {
// Initialize the Login User Map.
setLoginUserMap(new HashMap());
// Initialize the Login User Key Map.
setLoginUserKeyMap(new HashMap());
}
// Check login User id is already login or not.
if (getLoginUserKeyMap().containsKey(userId)) {
log.info("Duplicate Login");
// Get Current logged in User's Key.
String CurrentUserKey = getLoginUserKeyMap().get(userId);
// Get Current logged in User Information.
UserInfoBean currentUserInfoBean = getLoginUserMap().get(CurrentUserKey);
if (currentUserInfoBean != null) {
// Set Duplicate flag true to Current logged User.
currentUserInfoBean.setDuplicate(true);
// Overwrite Current logged User Information.
getLoginUserMap().put(CurrentUserKey, currentUserInfoBean);
}
}
// Set New Login User Information.
getUserInfoBean().setUserId(userId);
getUserInfoBean().setUserIdKey(userIdKey);
getUserInfoBean().setDuplicate(false);
getUserInfoBean().setServiceStop(false);
// Set New Login User Information and Key to Application Scope.
getLoginUserKeyMap().put(userId, userIdKey);
getLoginUserMap().put(userIdKey, getUserInfoBean());
}
다음은 checkStatus()
방법
public void checkStatus() throws DuplicateLoginException, UserServiceStopException {
if (getUserInfoBean() != null && getLoginUserMap() != null) {
UserInfoBean currentUser = getLoginUserMap().get(getUserInfoBean().getUserIdKey());
if (currentUser != null) {
if (currentUser.isServiceStop()) {
log.error("throw new UserServiceStopException()");
throw new UserServiceStopException();
} else if (currentUser.isDuplicate()) {
log.error("throw new DuplicateLoginException()");
throw new DuplicateLoginException();
}
}
}
}
를 생성하고 모든 페이지 checkStatus()
그 메소드를 호출한다.
<page view-id="/view/*">
<action execute="#{UserStatusChecker.checkStatus()}" />
이제 문제는 극복되었습니다 !!!!!
'User A'또는 'User B'를 찾는 방법은 사용자의 세션을 무효화하기 전에 'Original userID'를 소유 한 정식 사용자입니까? – SRy
내 awnser가 작동하지 않습니까? – Trind
@ 트린드 늦은 답변 트린드 죄송합니다. 귀하의 솔루션과 작업에 많은 감사를드립니다. 하지만 우리는 다른 솔루션을 제어해야하므로 내 사용자 정의 방법으로이 문제를 해결했습니다. 내 대답을 친절하게 보아주세요. – AKZap