2009-07-12 3 views
7

Tôi hiện đang phát triển ứng dụng Silverlight 3 cần một số loại xác thực người dùng, vì dữ liệu được lấy từ dịch vụ WCF là người dùng cụ thể. Đối tượng mục tiêu là Internet thông thường - vì vậy không có AD để xác thực.Xác thực người dùng Silverlight

Dưới đây là một số câu hỏi tôi đã liên quan đến tình hình rằng:

  • Có một khuôn khổ hay cơ chế khác mà có thể hỗ trợ cho tôi?
  • Bạn có đề xuất xác thực trong ứng dụng Silverlight hoặc thông qua các cơ chế bên ngoài như biểu mẫu auth không? Cái nào an toàn hơn?
  • Điều gì về hỗ trợ ngoài trình duyệt?

Trả lời

2

Tôi đã sử dụng xác thực của ASP.NET. Chỉ cần sử dụng một MembershipProvider (hoặc thực hiện của riêng bạn). Sau đó, truy cập http://www.silverlightshow.net/items/Accessing-the-ASP.NET-Authentication-Profile-and-Role-Service-in-Silverlight.aspx để xem cách bạn có thể hiển thị dịch vụ xác thực.

Sau đó, trong dịch vụ WCF, bạn làm như sau (lưu trữ trong ASP):

public class MyWCFService : IMyWCFService 
{ 
     // retrieve your UserId from the MembershipProvider 
     private int GetUserId() 
     { 
      MembershipUser user = Membership.GetUser(); 
      int userId = (int)user.ProviderUserKey; 
      return userId; 
     } 

     // check if user is authenticated 
     private bool IsUserAuthenticated() 
     { 
      return HttpContext.Current.User.Identity.IsAuthenticated; 
     } 

     public void Subscribe() 
     { 
      if (!IsUserAuthenticated()) 
      { 
       throw new SecurityException("You must be authenticated to be able to use this service."); 
      } 

      int userId = GetUserId(); 
      DoStuff(userId); 
     } 
} 

Hy vọng rằng sẽ giúp.

2

Tôi sẽ xem xét sử dụng các lớp xác thực tồn tại trong ASP.NET. Sau đó bạn có thể sử dụng Dịch vụ .NET RIA (hoặc thậm chí chỉ đơn giản là WCF) để giao tiếp với dịch vụ xác thực.

Consider this article as a primer.

+0

Bạn có kinh nghiệm về giải pháp này không? –

+0

Có. Tôi đã sử dụng SL3 và .NET RIA Services. Đó là bằng chứng về ứng dụng khái niệm mà tôi đang làm việc, nhưng tôi có thể tạo và đăng nhập người dùng từ xa. – billb