在NodeJS的TCP服务器上实现简单的身份validation
我几乎可以肯定,我不明白TCP服务器的基本概念,我不把数据视为stream,更糟糕的是,我可能不会很好地使用这些事件。
我想让tcp服务器写入套接字“username:”,这样你就可以input你的用户名(在像netcat或telnet这样的tcp客户端上),然后tcp服务器必须把下一个数据作为用户名。 到目前为止它确实有效(尽pipe我几乎可以肯定有更好的方法可以做到这一点),接下来它应该写上“password:”,这样你可以input你的密码,如果是正确的,那么应该validation证书和做更多的东西…但是会发生什么,当你input密码,它再次写入“密码:”,因为socket.write('password: ');
socket.on('data',function(){//etc});
这是我迄今为止的代码:
var net = require('net'); var server = net.createServer(function (socket) { socket.addListener("connect", function () { socket.write('username: '); socket.on('data',function(data){ var username = data.toString().replace('\n',''); socket.write('password: '); socket.on('data',function(data){ var password = data.toString().replace('\n',''); // verify authentication here // Do more stuff }); }); }); }); server.listen('8000','localhost');
什么是正确的方法来实现这个? 我只是实现这一点,因为我需要接收上传(stream)可能没有结束,并不是一次全部来。 我真的很愚蠢,试图解决这个问题与TCP服务器?
提前致谢。
您可以使用节点ftp服务器源作为参考。
你的代码中的主要问题:stream“数据”事件给你传入的数据拆分成块。 例如,如果客户端发出两个写入('用户名:u \ n')和写入('password:p \ n'),则可以预期数据内容是从'用户名:u \ n密码:p \ n'到25 “数据”事件与“u”,“s”,“e”,“r”等数据缓冲区。 您需要缓冲传入的块或使用状态机。
- 如何使用身份validation令牌访问用户数据
- 为什么connect-mongo为每个请求创build新的会话?
- Express res.render不能使用Angular路由
- Sails.js Waterlock如何覆盖login操作(如何编写自定义login操作)
- 如何向Google Analytics报告API v4进行身份validation
- 在不同情况下使用Passport.js更改并保存redirect
- node.js oauth2服务器到服务器客户端(谷歌跟踪authentication)
- Nodejs / mongodb-检查用户是否具有pipe理员权限(基于令牌的身份validation)
- 简单的RESTauthentication策略?