Svn身份验证用户名,密码使用Svn Kit

时间:2015-02-03 11:42:10

标签: java svn authentication svnkit

我正在尝试验证用户使用svnkit 1.7.8输入的用户名和密码。目前我在方法“authenticate”中使用“DefaultAuthenticationManager”来实现此目的。我面临的问题是,即使我输入了错误的凭据,该方法也不会抛出任何错误并继续执行代码。

我的代码..

 private void authenticate(String user, String password) throws SVNException {
    SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(baseUrl));
    ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(user, password);
    repository.setAuthenticationManager(authManager);
} 

这个错误是由于使用“DefaultAuthenticationManager”而不是“BasicAuthenticationManager”吗?请帮忙

注意:

我正在从https网址查看svn目录。我已经有了检查SVN到本地机器目录的工作代码,只需要帮助验证部分。

2 个答案:

答案 0 :(得分:3)

正如我在评论中提到的那样,您丢弃了使用SVNRepository初始化的AuthmenticationManager实例。

如果你还记得你评论过的answer,如果你读过documentation,那么就不难想出这样的事情:

final SvnOperationFactory svnOperationFactory = new SvnOperationFactory();
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(user, password);
svnOperationFactory.setAuthenticationManager(authManager);

try {
    final SvnCheckout checkout = svnOperationFactory.createCheckout();
    checkout.setSingleTarget(SvnTarget.fromFile(workingCopyDirectory));
    checkout.setSource(SvnTarget.fromURL(url));
    //... other options
    checkout.run();
} finally {
    svnOperationFactory.dispose();
}

修改 如果您确实需要使用SVNRepository

只是这样做:

SVNRepository repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(baseUrl));
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(user, password);
repository.setAuthenticationManager(authManager);

// now do any operation that you want with the *same* repository object
repository.checkout(..)

答案 1 :(得分:1)

您可以使用以下代码片段进行测试:我遇到了同样的问题,这就是我修复的方法。

使用过的API:

  

svnkit-1.7.8.jar

public boolean testSVNConnection(String svnURL,String svnUser,String svnPass){
 DAVRepositoryFactory.setup();
 String url="https://your_svn_host/path/";
 String name="username";
 String password="password";
 SVNRepository repository = null;
 try { 
     repository = SVNRepositoryFactory.create(SVNURL.parseURIDecoded(url));
     ISVNAuthenticationManager authManager = 
                  SVNWCUtil.createDefaultAuthenticationManager(name, password);
     repository.setAuthenticationManager(authManager);
     repository.testConnection();
     System.out.println("Connection done..");
     return true;
 } catch (SVNException e){
     System.out.println("Not connected");
     e.printStackTrace();
     return false;
 }

}

只需根据要求更改方法签名。