2013-05-10 5 views
0

Я хотел бы сохранить клиентов UserName и SessionId, когда клиент подписывается на определенный канал. Когда я переопределить canHandshake() я могу получить учетные данные пользователя, используя следующие:Хранение учетных записей пользователей на сервере Bayeux

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

Просто интересно, как я могу хранить эти учетные данные, а затем восстановить их? Я просмотрел документацию по проверке подлинности here, и он просто упоминает о связи данных аутентификации с сеансом. Это сеанс на стороне сервера Bayeux?

Thanks

ответ

0

«Связывание» может быть выполнено несколькими способами.

Вы можете связать эту информацию во внешней карте с помощью:

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

где map может быть java.util.ConcurrentHashMap<String, ServerSession> поля в самом или в другом объекте политики безопасности, такие как служба пользователя.

Для простых случаев использования, то userName могут быть связаны непосредственно на сессии таким образом:

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

Или вы можете использовать оба метода.

Это updated link для руководства по аутентификации, и вы можете найти последнюю полную документацию CometD по адресу http://docs.cometd.org.