2012-02-19 40 views
5

Sử dụng Tư cách thành viên Asp.net & Nhà cung cấp hồ sơ:Có thể truy xuất hồ sơ người dùng bằng id người dùng thành viên của họ không?

Tôi có thể truy xuất hồ sơ người dùng bằng UserID thành viên thay vì tên người dùng của họ không?

Lý do tôi hỏi là vì nếu tôi có UserID và không Username tôi sẽ phải viết hai dòng mã sau đây

Dim MembershipUser As MembershipUser = Membership.GetUser("UserID") 
    Dim Profile As Profile = Profile.GetProfile(MembershipUser.UserName) 

Thay vì:

Dim Sơ Như Sơ = Hồ sơ .GetProfile ("UserID")

Điều này có ảnh hưởng đến hiệu suất không? Thiết kế của tôi có tệ không? Tui bỏ lỡ điều gì vậy?

Xin lưu ý: Tôi biết rằng tôi có thể lấy hiện tại người dùng đăng nhập bằng cách sử dụng đoạn mã sau: HttpContext.Current.User.Identity.Name

Trả lời

3
Guid userId = Membership.GetUser().ProviderUserKey as Guid; 

sẽ cung cấp cho bạn UserId mà bạn đang theo đuổi . Để đơn giản trong các ứng dụng asp.net tôi thường gắn vào phiên khi người dùng đăng nhập.

Bảng thành viên asp.net có tên người dùng duy nhất cho mỗi ứng dụng, và vì có thể xác định nhiều ứng dụng trong một cơ sở dữ liệu, bạn cũng có thể gọi cho Profile.GetProfile (string userName) để trả về hồ sơ từ ứng dụng khác . Đây là lý do tại sao không có GetProfile (userName) và đó là một ý tưởng tồi thực hiện nó cho mình.

+0

Tôi đang xây dựng một ứng dụng Web ASP.Net và không phải là một trang web vì vậy tôi đã sử dụng WebProfileBuilder 1.3. (Như tôi không thực sự thấy bất kỳ cách nào khác để làm điều đó?) ... Tôi có thể sử dụng thành công: WebProfile.GetProfile (UserName) nhưng không có phương pháp để vượt qua trong ID. Tôi có phải tùy chỉnh nó không? – Haris

+0

Nếu bạn tạo Trang web mới trong studio trực quan và sau đó thêm một số thuộc tính tức là . Sau đó, bạn có thể truy xuất giá trị mã bưu điện đó cho bất kỳ người dùng nào bằng cách sử dụng mã sau: Profile.GetProfile ("Tên người dùng"). Vậy tại sao bạn lại nói rằng 'Đây là lý do tại sao không có GetProfile (userName) và đó là một ý tưởng tồi khi thực hiện nó'? – Haris

+0

Nó không phải là rõ ràng từ câu hỏi của bạn những gì chính xác nó là bạn thực sự muốn ... Có một cái nhìn ngắn gọn về ứng dụng asp.net của tôi với vanilla asp.net thành viên Tôi đã hỏi những seriees của câu hỏi: "Điều này sẽ ảnh hưởng đến hiệu suất? thiết kế của tôi xấu? Tôi có thiếu thứ gì đó không? " – b0rg

Các vấn đề liên quan