您可以通过在尝试发布/订阅无效主题时断开客户端来实现此目的。
这意味着使用授权而不是身份验证来强制执行您的策略。只能使用MQTT连接消息中可用的参数来完成认证,例如,客户端ID,密码。
所以要做到这一点 ConnectionValidator 服务器启动时需要设置事件处理程序。它可以记录客户端尝试连接的客户端ID和密码,并始终允许连接继续。
ConnectionValidator
该 ApplicationMessageReceived 当客户端发布/订阅主题时,将调用事件处理程序。此事件处理程序可以验证客户端与数据库中的客户端连接时传递的客户端ID和密码(根据需要使用主题)。如果路径,客户端ID和密码无效,则需要明确断开客户端。
ApplicationMessageReceived
通过在服务器上的所有会话列表中查找客户端,可以明确断开客户端 mqttServer.GetClientSessionsStatus() 。然后调用 DisconnectAsync() 在客户端会话上。
mqttServer.GetClientSessionsStatus()
DisconnectAsync()