2010-06-23 26 views
25

Bất kỳ ai có thể cho tôi biết cách xác thực người dùng (người dùng SVN) cho một kho lưu trữ bằng Thư viện SharpSVN. Kho lưu trữ đó chỉ nên được những người dùng đó cam kết. Cảm ơnXác thực Kho SVN bằng SharpSVN

Trả lời

45

Sử dụng các thuộc tính Authenticate của SVNClient:

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

Nên được đánh dấu là câu trả lời hay nhất. Làm việc cho tôi quá, cảm ơn! – jocull

+0

có làm việc cho tôi quá cảm ơn Bertrand :) – picnic4u

+1

Điều này không làm việc cho tôi, có điều kiện tiên quyết nào cho điều này không? –

9

Bạn cũng có thể ghi đè lên lỗi chứng chỉ SSL bằng cách thêm một event handler để SslServerTrustHandlers như thế này:

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

Chỉ để nó được đề cập: Không gọi 'client.authentication.clear()' sau khi đăng ký sự kiện, nếu không nó sẽ không kích hoạt. – SanBen

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

Đối với những người những người không muốn thổi đi các thông tin đăng nhập mặc định của bạn (nếu bạn đang chạy TortoiseSVN trên cùng một máy).

2

Trong trường hợp của tôi, máy chủ SVN đang chạy VisualSVN Server 3.5.3 với Xác thực Windows tích hợp được bật. Sử dụng SharpSvn 1.9004.3879.127, khách hàng SVN cố gắng sử dụng Windows authentication ngay cả khi tôi cấu hình nó với một tên người dùng và mật khẩu:

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

Điều này dẫn đến các lỗi sau khi mã ứng dụng được điều hành bởi một người dùng Windows mà didn 't có quyền truy cập vào kho lưu trữ:

SvnRepositoryIOException: Không thể kết nối với một kho lưu trữ tại URL' https://mysvnserver/svn/reponame '

tôi cố định này bằng cách 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"); 
Các vấn đề liên quan