当客户端订阅特定频道时,我想存储客户端UserName和SessionId。当我覆盖canHandshake((时,我可以使用以下方法获得用户凭据:
userName = (String) authentication.get("userName");
sessionId = (String) authentication.get("sessionId");
只是想知道我如何存储这些凭据,然后再检索它们?我已经看过这里的身份验证文档,其中只提到将身份验证数据链接到会话。这是Bayeux服务器端会话吗??
感谢
"链接"可以通过多种方式完成。
您可以通过以下方式将这些信息链接到外部地图中:
@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"));
或者你可以同时使用这两种技术。
这是身份验证操作的更新链接,您可以在http://docs.cometd.org.