我在websockets和Django rest框架的主应用程序中使用了龙卷风+ sockjs。此外,我在Django应用程序上使用rest-framework作为auth。现在我必须确定龙卷风中的使用者。我如何看待它:
我还以为用芹菜呢。当用户连接到龙卷风时,龙卷风会为芹菜创造任务,在这个任务中,jwt将被解析。在这种情况下,解决方案不是阻挡龙卷风。但是如何通过websockets注意到用户如何检查jwt呢?
发布于 2019-01-03 12:01:13
更新
您不应该需要读取数据库来验证JWT。JWT是一个签名的令牌,您所需要的只是验证JWT的秘密密钥。
旧答案:
(注:图对于JWT来说是相当多余的,因为JWT已经是一个签名的令牌,并且可以在不需要保存的情况下进行验证。然而,此图表适用于基于cookie的auth。)
您可以使用message (如Redis)在Django和旋风之间共享auth令牌:

Redis是快速和轻量级的,您可以通过“旋风”异步连接它。
这里不需要芹菜。
发布于 2019-01-03 02:38:10
如果要使用SQLAlchemy连接和处理数据库,则可以使用对数据库进行异步查询,并通过WebSocket通知用户,而不需要龙卷风的中断事件循环。
@coroutine
def open(self):
with self.make_session() as session:
jtw = request.params.get('authorization')
jwt_valid = yield self.check_jwt_valid(jwt, session)
if not jwt_valid:
self.write('JWT Inválid')
self.close()
@coroutine
def check_jwt_valid(self, jwt, session):
jwt_found = session.query(JWT_QUERY...).first()
return jwt_foundhttps://stackoverflow.com/questions/54004187
复制相似问题