IP白名单需要自己写业务逻辑吗?还是有地方可以设置?

qq5738912

我的workerman想加入IP白名单功能。请问是要自己在

$worker->onConnect = function ($connection) {
    print_r("new ip: " . $connection->getRemoteIp());
};

这里补充业务逻辑?
还是workerman本身就提供了设置?

2369 2 0
2个回答

抽不完的寂寞

workerman 没有白名单设置,反正我从文档上没看到,这个应该属于业务逻辑。

  • 暂无评论
taozywu

@https://wenda.workerman.net/people/qq5738912
 
首先你这个是业务逻辑,需要你自己去处理
 
如果单纯做IP白名单,可以参考手册中onConnect
 
注意:onConnect事件仅仅代表客户端与Workerman完成了TCP三次握手,这时客户端还没有发来任何数据,此时除了通过$connection->getRemoteIp()获得对方ip,没有其他可以鉴别客户端的数据或者信息,所以在onConnect事件里无法确认对方是谁。要想知道对方是谁,需要客户端发送鉴权数据,例如某个token或者用户名密码之类,在http://doc.workerman.net/worker/on-message.html里做鉴权。
由于udp是无连接的,所以当使用udp时不会触发onConnect回调,也不会触发onClose回调。

如果还做其他白名单,你需要在onMessage进行处理。

  • qq5738912 2019-07-31

    多谢大家的回复,我在那里加上了白名单逻辑了,不过很大的问题就是$connection->getRemoteIp()获取的ip居然和nginx的access.log不一样,也和thinkphp中使用php获取的IP不一样。这是什么回事?我的是h5/websocket来的

  • taozywu 2019-08-01

    这个ip是从stream_socket_recvfrom这个函数获取的,你可以去多验证一下。

年代过于久远,无法发表回答
🔝