Svn使用Svn Kit验证用户名,密码和URL

时间:2014-02-22 07:37:48

标签: java svn authentication svnkit

如何在不签出项目的情况下使用用户名和密码对svn网址进行身份验证

现在我调用 doCheckout()方法进行身份验证。我不想下载到本地的starge。我只是想进行身份验证。

我当前的代码

public class SvnAuth {
    private static SVNClientManager ourClientManager;

    public boolean svnAuthentication(String svnLocation, String svnUserName,
        String svnPassword, File file) throws SVNException {

        DefaultSVNOptions options = SVNWCUtil.createDefaultOptions(true);
        ourClientManager = SVNClientManager.newInstance(options, svnUserName,
                svnPassword);
        SVNUpdateClient updateClient = ourClientManager.getUpdateClient();
        updateClient.setIgnoreExternals(false);
        SVNRevision rev = SVNRevision.HEAD;
        try {
            long revision1 = updateClient.doCheckout(
                    SVNURL.parseURIEncoded(svnLocation), file, rev, rev, true);
        } catch (SVNException e) {
            SVNErrorMessage svnErrorMessage = e.getErrorMessage();
            throw new SVNException(svnErrorMessage);
        }

        return true;
    }
}

我使用的SVNKit版本是 1.7.4-v1

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码:

private boolean checkPassword(SVNURL url, String user, String password) throws SVNException {
    SVNRepository svnRepository = SVNRepositoryFactory.create(url);
    try {
        svnRepository.setAuthenticationManager(new BasicAuthenticationManager(user, password));
        svnRepository.testConnection();
        return true;
    } catch (SVNException e) {
        if (e.getErrorMessage().getErrorCode() == SVNErrorCode.RA_NOT_AUTHORIZED) {
            return false;
        } else {
            throw e;
        }
    } finally {
        svnRepository.closeSession();
    }
}

实际上,您可以使用从存储库中读取某些数据的任何方法来代替svnRepository.testConnection(),而testConnection()只是最简单的方法。