1

我需要验证某个用户是否在我的应用程序中是有效的 SVN 用户。我想在 Windows 中使用 SVN 命令行工具/Tortoise SVN Commndline 或 Python 来实现这一点。我查找了 PySVN,但在我看来,没有办法验证该库中的当前用户。请提出一些相同的方法。

谢谢你

4

3 回答 3

0

查看文档pysvn.Client.callback_*,您将看到您必须提供的方法处理提示输入密码和错误(如果它们不匹配)。

于 2014-01-15T06:48:18.863 回答
0

您可以使用 pysvn 使用callback_get_login进行身份验证。

根据文档

每次 subversion 需要用户名和密码来访问存储库并且没有缓存凭据时,都会调用 callback_get_login。

于 2014-01-15T06:49:28.297 回答
0

让它发挥作用似乎相当困难。我想出了以下结果:

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

它能做什么:

  1. 它使用一次尝试回调。因为 pysvn 会一遍又一遍地尝试相同的凭据,如果它们不起作用,我们需要停止它。
  2. 不会保留任何凭据(如果不是所需的行为,您可以省略它)

  3. 清除默认用户名和密码,因此不会使用缓存

  4. 禁用提示

于 2017-01-12T11:41:56.147 回答