4

これが私の機能の1つです:

def connect():
    c = xmlrpclib.ServerProxy('http://username:password@host',
                allow_none=True,
            )
    return c

戻る前に、このメソッドでユーザー名とパスワードが正しいかどうかを確認するにはどうすればよいcですか?

4

1 に答える 1

5

このトリックを使用して、提供された資格情報が有効かどうかを確認できます (plone サイトに wsapi4plone が正しくインストールされている場合)。

>>> server = xmlrpclib.ServerProxy("http://admin:admin@localhost:8080/plone")
>>> server.get_schema('Document')
{'creators': {'required': False, 'type': 'lines'}, 'description': ...
>>> baduser_server = xmlrpclib.ServerProxy("http://bad:bad@localhost:8080/plone")
>>> baduser_server.get_schema('Document')
Traceback (most recent call last):
...
ProtocolError: <ProtocolError for bad:bad@localhost:8080/plone: 401 Unauthorized>

したがって、対応するコードは次のようになります。

from xmlrpclib import ServerProxy
from xmlrpclib import ProtocolError
try:
    server = ServerProxy("http://admin:admin@localhost:8080/plone")
    server.get_schema('Document')
    return server
except ProtocolError:
    return None
于 2012-01-04T00:33:59.737 に答える