我正在尝试验证用户使用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到本地机器目录的工作代码,只需要帮助验证部分。
答案 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;
}
}
只需根据要求更改方法签名。