2

WampCraServerProtocol(Autobahn Python から)サブクラス化し、オーバーライドしていますgetAuthSecret。ただし、簡単なテストを行うと、そのメソッドから deferred を返すことができるようになりました。

def getAuthSecret(self, authKey):        
    deferred = Deferred()
    deferred.callback("secret")
    return deferred

...次のエラーが表示されますWampCraClientProtocol

Authentication Error! http://api.wamp.ws/error#generic Deferred instance has no attribute '__len__' None

わかりました、それだけですでに混乱しています。getAuthSecret返される deferred に対して特別な要件はありますか?

わかりました、そのエラーに基づいて、私が返す遅延オブジェクトに (簡単な) lenメソッドを追加しました:

def getAuthSecret(self, authKey):
    #secret_deferred = self.factory.get_secret(authKey)
    deferred = Deferred()
    deferred.__len__ = lambda: 1
    deferred.callback("secret")
    return deferred

...その場合、次のようになります。

Authentication Error! http://api.wamp.ws/error#generic unsupported operand type(s) for +: 'instance' and 'str' None

それは私をさらに混乱させます。そのメソッドから deferred を返す正しい方法を知りたいだけです。(単純な単純な文字列を返す場合、すべてが完全に機能することに注意してください)。ありがとう。

4

1 に答える 1

1

これは私にとってはうまくいきます:

https://github.com/tavendo/AutobahnPython/blob/master/examples/wamp/authentication/server.py#L72

使用している AutobahnPython のバージョンは何ですか?

アップデート:

v0.5.9 には遅延ベースの認証に関するバグがあります (以下のコメントを参照)。v0.5.14 で修正されました。Wamp Cra 遅延ベースの認証は、そのバージョンで正常に動作します。

于 2013-02-24T17:42:19.703 に答える