2013-05-10 1 views
0

클라이언트가 특정 채널을 구독 할 때 클라이언트 UserName 및 SessionId를 저장하고 싶습니다. 내가 canHandshake()를 오버라이드 (override) 할 때 내가 사용하여 사용자 인증 정보를 얻을 수있는 다음Bayeux 서버에 사용자 Credentialial 저장

userName = (String) authentication.get("userName"); 
sessionId = (String) authentication.get("sessionId"); 

내가 이러한 자격 증명을 저장하고 나중에 검색 할 수있는 방법을 궁금해? 나는 인증 문서 here을 살펴 보았으며 인증 데이터를 세션에 연결하는 것에 대해서 언급했다. 이것은 Bayeux 서버 사이드 세션입니까 ??

감사합니다.

답변

0

"연결"은 여러 가지 방법으로 수행 할 수 있습니다. map 보안 정책 자체 또는 다른 개체의 java.util.ConcurrentHashMap<String, ServerSession> 필드를 할 수있는 등 사용자 서비스로

@Override 
public boolean canHandshake(BayeuxServer server, ServerSession session, ServerMessage message) 
{ 
    ... 
    Map<String, Object> authentication = ...; 
    map.put((String)authentication.get("userName"), session); 
    ... 
} 

:

당신은 통해 외부 맵에이 정보를 링크 할 수 있습니다.

session.setAttribute("userName", authentication.get("userName")); 

또는이 두 가지 기술을 사용할 수 있습니다 간단한 사용 사례를 들어

userName이 방법으로 세션에 직접 연결할 수 있습니다.

이것은 인증 방법에 대한 updated link이며 최신 포괄적 인 CometD 설명서는 http://docs.cometd.org에서 찾을 수 있습니다.