使用命令行或Python进行SVN用户身份验证

时间:2014-01-15 06:38:23

标签: python svn tortoisesvn pysvn

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

谢谢

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

根据documentation

  每次subversion需要用户名时,都会调用 callback_get_login   领域中的密码以访问存储库并且没有缓存   凭证。

答案 2 :(得分: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. 禁用提示