2012-04-30 15 views
5

Tôi đã thử điều này với nhiều thành công. Về cơ bản tôi cần phải đăng nhập vào Exchange bằng cách sử dụng EWS từ xa.Kiểm tra thông tin đăng nhập từ xa và kiểm tra người dùng đã đăng nhập

Vấn đề là tôi không biết liệu người dùng đã đăng nhập OK hay thông tin đăng nhập sai vì tôi không nhận được gì! Nếu tôi cung cấp thông tin đăng nhập sai, phần mềm này chỉ tiếp tục!

Có điều gì đó tôi thiếu, tôi đã kiểm tra các công cụ MSDN về EWS cho bạn thấy cách kết nối để trao đổi nhưng không có gì về xác thực thông tin xác thực!

Dưới đây là mã tôi hiện phải kết nối.

public void connect(string Email, string Password) 
    { 
     try 
     {    
      _useremail = Email; 
      _userpass = Password; 

      // Define the credentials to use. 
      var credentials = new WebCredentials(_useremail, _userpass); 

      _ExchangeServer = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
      _ExchangeServer.Credentials = credentials; 
      _ExchangeServer.Url = new Uri(_ExchangeEWSURL); 
      _ExchangeServer.Timeout = 60; 
      _ExchangeServer.KeepAlive = true; 
      _ExchangeConnected = true; 
     } 
     catch (Exception ex) 
     { 
      _ExchangeConnected = false; 
      throw ex; 
     } 
    } 

như bạn có thể thấy hiện tại tôi chỉ đặt giá trị bool thành true trong lớp. Bất kỳ ý tưởng?

Trả lời

10

Để kiểm tra xem thông tin xác thực đã cung cấp có hợp lệ hay không, bạn phải truy vấn tài nguyên bạn mong muốn người dùng có quyền truy cập (lịch, hộp thư đến, danh bạ, v.v.). Không có phương thức đăng nhập đăng nhập rõ ràng - xác thực xảy ra hoàn toàn khi bạn yêu cầu tài nguyên người dùng (qua FindItems, FindFolders, FindAppointments, v.v.).

+1

Cảm ơn SliverNinja (tên tuyệt vời btw) từ những gì tôi đã đọc có thể làm một PrincipalContext? Đáng buồn là máy chủ đang cho tôi 401 giây vào lúc này nên tôi không thể kiểm tra: ( – Neo

+1

SliverNinja, nếu bạn đăng một ví dụ, tôi sẽ đánh dấu nó là câu trả lời được chấp nhận khi nó hoạt động! – Neo

+2

Nếu bạn chỉ muốn đảm bảo rằng thông tin đăng nhập là hợp lệ và không kiểm tra quyền truy cập vào tài nguyên cụ thể, bạn có thể thực hiện cuộc gọi như thế này 'exchService.ConvertIds (new AlternateId [] {new AlternateId (IdFormat.HexEntryId," 00 ", email)}, IdFormat.HexEntryId);' Nó sẽ có một ngoại lệ nếu các credentilas sai –