Каждый клиент имеет заголовок X-Auth-Token, установленный во время первоначального рукопожатия.Сервер должен сделать просмотр базы данных, чтобы проверить, действителен ли токен авторизации.Если он недействителен, серверу необходимо отклонить соединение и ответить на рукопожатие со статусом 403.
Я правильно делаю?
class EchoServerProtocol(WebSocketServerProtocol):
def onConnect(self, request):
authToken = request.headers['x-auth-token']
user = User(authToken, self.factory.protocols)
user.processNewConnection()
return (None, headers)
class User():
def __init__(self, authToken, factoryProtocols):
self.authToken = authToken
self.factoryProtocols = factoryProtocols
def processNewConnection(self):
query = "SELECT name, address, role, access_token FROM dummy_user WHERE access_token = '"+ self.authToken +"'"
return dbpool.runQuery(query).addCallback(self.handleResult).addErrback(self.errorquery)
def errorquery(self,result):
print ("error received", result)
## Please suggest a better way here
return result
def handleResult(self, result):
if result:
## blah blah blah...
else:
## Please suggest a better way here
raise ConnectionDeny(ConnectionDeny.FORBIDDEN, u'Invalidoooo authentication token'.format(u', '.join(self.factoryProtocols)))
return