2010-06-23 4 views
25

Может ли кто-нибудь сказать мне, как аутентифицировать пользователей (пользователей SVN) для репозитория, используя библиотеку SharpSVN. Этот репозиторий должен использоваться только этими пользователями. БлагодаряПроверка подлинности репозитория SVN с помощью SharpSVN

ответ

45

Используйте свойство Authenticate из SVNClient:

client.Authentication.Clear(); // Clear a previous authentication 
client.Authentication.DefaultCredentials = new System.Net.NetworkCredential("user", "password"); 
+1

Должен быть помечен как лучший ответ. Работал для меня тоже, спасибо! – jocull

+0

да работал для меня тоже спасибо Bertrand :) – picnic4u

+1

Это не работает для меня, есть ли какие-то предпосылки для этого? –

9

Вы также можете переопределить ошибки сертификата SSL путем добавления обработчика событий SslServerTrustHandlers так:

SVN_Conn.Authentication.SslServerTrustHandlers += new EventHandler<SharpSvn.Security.SvnSslServerTrustEventArgs>(SVN_SSL_Override); 

static void SVN_SSL_Override(object sender, SharpSvn.Security.SvnSslServerTrustEventArgs e) 
{ 
    e.AcceptedFailures = e.Failures; 
    e.Save = true; 
} 
+4

Просто так, чтобы это было упомянуто: Не называть 'client.authentication.clear()' после подписки на событие, иначе он не будет срабатывать. – SanBen

14
client.Authentication.ForceCredentials("user", "password"); 

Для тех, вы не хотите сбрасывать свои учетные данные по умолчанию (если вы используете TortoiseSVN на той же машине).

2

В моем случае на сервере SVN был запущен VisualSVN Server 3.5.3 со встроенной проверкой подлинности Windows. Использование SharpSvn 1.9004.3879.127, клиент SVN попытался использовать проверку подлинности Windows, даже когда я настроил его с именем пользователя и паролем:

client = new SvnClient(); 
client.Authentication.Clear(); //Prevents saving/loading config to/from disk 
client.Authentication.DefaultCredentials = new NetworkCredential("username", "password"); 

Это привело к следующей ошибке, когда код приложения был запущен пользователем Windows, что Бесполезный 'т иметь доступ к хранилищу:

SvnRepositoryIOException: Не удается подключиться к хранилищу в URL' https://mysvnserver/svn/reponame '

Я установил это, only allowing basic and digest authentication:

client = new SvnClient(); 
client.Configuration.SetOption("servers", "global", "http-auth-types", "basic;digest"); 
client.Authentication.Clear(); // Prevents saving/loading config to/from disk 
client.Authentication.DefaultCredentials = new NetworkCredential("username", "password"); 
Смежные вопросы