我使用 Nodejs 和 Flutter 以及 socket.io 客户端开发了应用程序。我想在两个用户之间的通信过程中保护 Socket.io 的安全。有什么指导或建议吗?谢谢。
在 Flutter 上,您可以为选项标头添加额外的标头。
'extraHeaders': {HttpHeaders.authorizationHeader: '$accessToken'}
import 'package:socket_io_client/socket_io_client.dart' as IO;
IO.Socket createSocket(String accessToken) {
final url = 'https://$yourDomainHere';
return IO.io(url,
<String, dynamic>{
'transports': ['websocket'],
'rejectUnauthorized': false,
'autoConnect': false,
'extraHeaders': {HttpHeaders.authorizationHeader: '$accessToken'}
});
}
您可以使用 OptionBuilder() 方法 .setAuth() 或 .setAuthFn()
final socket = io.io( url.toString(),
OptionBuilder()
.setTransports(['websocket'])
.disableAutoConnect()
.setAuth({'authorization': "$token" }) // Use This
.setAuthFn((callback){
final String token = secureStorage.get('accessToken');
callback({'authorization': '$token'})
}) // Or This
.build()
);
socket.connect();