我的主要应用是一个Django应用,然而,对于一些实时的东西,我想使用Node/Socket.IO,我正在使用Redis从Django到Node (然后到各种客户端)进行一些发布/订阅。棘手的部分是如何根据Django身份验证验证Node用户?
在我的Node应用程序中,我有:
io.on('connection', function (socket) {
const subscribe = redis.createClient();
var userId = authenticateAndGetUserId();
subscribe.subscribe(userId + ':feed-items');
subscribe.on('message', function (channel, message) {
socket.emit('feed-items', JSON.parse(message));
});
});
所以我的问题是什么是实现authenticateAndGetUserId
的好策略?会话是在MySQL中支持的,所以我可以通过它来完成。只是好奇有没有更好的办法。
发布于 2012-05-06 15:29:05
在Django方面,我会公开一个REST API。然后,在Node.js上,您可以执行诸如POST用户名/密码之类的操作
http://yourdjangoserver.com/authenticate
它将返回一些JSON,其中包含您需要的信息。如果您希望保护API不受公众的监督,那么可以将其设置为私有的,或者使用像basic auth这样的东西来保护它。
restify是一个npm包,它使得在Node.js端使用REST变得非常容易。这个架构的好处是它是松散耦合的。你可以用任何东西替换Django,客户永远不会知道。
https://stackoverflow.com/questions/10467802
复制相似问题