Является ли это правильным способом отключения клиента автобана при отложенном обратном вызове после поиска adbapi? - PullRequest
0 голосов
/ 29 апреля 2019

Каждый клиент имеет заголовок 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 

...