在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”等数据缓冲区。 您需要缓冲传入的块或使用状态机。
- 我无法使用passport-facebook来validation路线
- 如何使用Passport保护路线终点?
- 如何在node.js中实现loginauthentication
- InternalOAuthError:无法获取访问令牌
- Express:一个路由的基本authentication
- Sails.js Waterlock / auth / register导致错误500
- 在使用Passport-local作为validation策略的快速应用程序中,不受保护的端点
- NodeJS Passport:通过两种策略multilogin – 序列化问题
- node.js – everyauth – Facebook API和会话处理