我需要验证某个用户是否在我的应用程序中是有效的 SVN 用户。我想在 Windows 中使用 SVN 命令行工具/Tortoise SVN Commndline 或 Python 来实现这一点。我查找了 PySVN,但在我看来,没有办法验证该库中的当前用户。请提出一些相同的方法。
谢谢你
我需要验证某个用户是否在我的应用程序中是有效的 SVN 用户。我想在 Windows 中使用 SVN 命令行工具/Tortoise SVN Commndline 或 Python 来实现这一点。我查找了 PySVN,但在我看来,没有办法验证该库中的当前用户。请提出一些相同的方法。
谢谢你
查看文档pysvn.Client.callback_*
,您将看到您必须提供的方法处理提示输入密码和错误(如果它们不匹配)。
您可以使用 pysvn 使用callback_get_login进行身份验证。
根据文档:
每次 subversion 需要用户名和密码来访问存储库并且没有缓存凭据时,都会调用 callback_get_login。
让它发挥作用似乎相当困难。我想出了以下结果:
def get_prepared_svn_client(self, username, pwd):
client=pysvn.Client()
class OneAttemptLogin:
"""
if login failed, pysvn goes into infinite loop.
this class is used as callback; it allows only one login attempt
"""
def __init__(self, username, pwd):
self.attempt_tried=False
self.username=username
self.pwd=pwd
def __call__(self, x,y,z):
if not self.attempt_tried:
self.attempt_tried=True
return (True, self.username, self.pwd, False)
else:
return (False, "xx", "xx", False)
client.callback_get_login=OneAttemptLogin(username, pwd)
client.set_auth_cache(False)
client.set_store_passwords(False)
client.set_default_username('')
client.set_default_password('')
client.set_interactive(False)
return client
它能做什么:
不会保留任何凭据(如果不是所需的行为,您可以省略它)
清除默认用户名和密码,因此不会使用缓存
禁用提示