在Bayeux服务器中存储用户凭据

时间:2013-05-10 08:53:59

标签: cometd bayeux

当客户端订阅特定频道时,我想存储客户端UserName和SessionId。当我覆盖canHandshake()时,我可以使用以下内容获取用户凭据:

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

只是想知道我如何存储这些凭据然后检索它们?我已经查看了身份验证文档here,它只是提到将身份验证数据链接到会话。这是Bayeux Server端会话吗?

由于

1 个答案:

答案 0 :(得分: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,您可以在http://docs.cometd.org找到最新的综合CometD文档。