在 Erlang 中显示特定于连接的 cookie

Display connection specific cookies in Erlang

erlang:set_cookie/2 的节点上设置 cookie 时,可以为不同的节点设置不同的 cookie。有什么办法可以显示,哪个cookie是为哪个节点设置的?

调用 erlang:get_cookie/1 不显示此信息,仅显示 "default" cookie。

示例:

用 cookie foo 启动 NodeA,用 cookie bar 启动 NodeB。在 NodeA 现在通过调用 erlang:set_cookie(NodeB, bar) 将与 NodeB 通信时使用的 cookie 设置为 bar。 Ping 现在工作正常,没有 "Connection attempt from disallowed node..." 错误。然而,在 NodeA 上调用 erlang:get_cookie() 仍然显示 "default" cookie foo。如何找到为NodeB设置的cookie?

您必须 运行 NodeB 上的 get_cookie/0 函数才能获取该节点的名称。简单的解决方案是(在 NodeA 上):

rpc:call(NodeB, erlang, get_cookie, []).

连接节点后。

在 NodeA 上执行 erlang:set_cookie(NodeB, bar) 调用只是让 NodeA/NodeB 可以相互连接,它们仍然有它们的原始 cookie。

但是为了能够连接到其他节点,您必须已经知道该节点的 cookie :)

它似乎没有记录,但 auth:get_cookie/1 做你想做的。对于您的情况,您可以在 NodeA 上致电 auth:get_cookie(NodeB)