2009-10-30 35 views
7

Tôi đang sử dụng .NET 3.5. Ngoài ra, Xác thực biểu mẫu được sử dụng.ASP.NET | Xác thực biểu mẫu | TẤT CẢ người dùng đã đăng nhập (danh sách tất cả người dùng hoặc số)

Có cách nào để lấy danh sách TẤT CẢ người dùng đã đăng nhập hoặc đếm trong ASP.NET?

Lưu ý: Tôi không sử dụng thành viên và vai trò

+2

Cũng lưu ý không có vấn đề gì bạn làm, đếm mà có thể được tắt. –

+0

Tôi phải làm một cái gì đó * như * này một lần để hạn chế tải trên một trang web. Tuy nhiên tôi đã sử dụng bắt đầu/kết thúc phiên. –

Trả lời

6

Không có không được trừ khi

  1. Bạn đã xác định một trong mã của riêng bạn

  2. Bạn đang sử dụng mặc định Nhà cung cấp thành viên ASPNET đã xác định phương thức GetNumberOfUsersOnline().

  3. Bạn đang sử dụng một nhà cung cấp thành viên tùy chỉnh và đã cung cấp một thực hiện đối với phương pháp GetNumberOfUsersOnline() mình

Nhà cung cấp Membership ASPNET mặc định tính toán số lượng người dùng trực tuyến bằng cách truy vấn cơ sở dữ liệu SQL Server và kiểm tra LastActivityDate lưu trữ đối với mỗi người dùng dựa vào thuộc tính được định nghĩa UserIsOnlineTimeWindow mà bạn có thể đặt trong web.config. Nếu LastActivityDate lớn hơn thời gian hiện tại trừ đi giá trị UserIsOnlineTimeWindow (đại diện cho phút), thì người dùng được coi là trực tuyến.

Nếu bạn muốn làm điều gì đó tương tự thì bạn có thể cân nhắc triển khai một phương pháp tương tự. bạn có thể xem mã cho các nhà cung cấp mặc định theo số downloading the source code. Để hoàn thành ảnh của mình, bạn cũng có thể muốn chạy aspnet_regsql.exe để bạn có thể xem các quy trình được lưu trữ mà nhà cung cấp mặc định sử dụng.

+0

Làm cách nào để triển khai Nhà cung cấp thành viên? – Chicago

+0

để thực hiện của riêng bạn là khá đơn giản. Hãy xem bài viết này- http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx –

+0

Rất vui được biết về thuộc tính UserIsOnlineTimeWindow. –

3

Xác thực mẫu lưu trữ tất cả trạng thái trong cookie được chuyển đến trình duyệt người dùng.

(Điều này cho phép hình thức xác thực để làm việc trên một nông trang web)

Vì vậy không có cách nào để có được một danh sách người dùng đăng nhập vv từ hình thức xác thực tiêu chuẩn.

Tuy nhiên Forms Authentication có sự kiện mà nó kích hoạt khi nó xác thực người dùng vv Bạn có thể cập nhật danh sách của riêng bạn của người dùng trong những sự kiện này - (cẩn thận với khóa nếu bạn làm như vậy)

Tuy nhiên như một người dùng sẽ được "đăng nhập" khi cookie hết hạn bởi trình duyệt, bạn sẽ thấy rất khó để xóa chính xác tất cả những người dùng đã đăng nhập vào đúng thời điểm từ danh sách của bạn.


Bạn có thể lưu trữ thời gian bạn xem lần cuối mỗi người dùng và sau đó có danh sách người dùng bạn đã xem trong 5 phút qua. Ví dụ: giữ danh sách hoạt động người dùng.

1

Tôi đã sử dụng Session_Start và Session_End trong Global.aspx. nó hoạt động hầu hết thời gian ngoại trừ người dùng đóng trình duyệt của họ.phía máy chủ cần đợi phiên đã hết hạn để xóa người dùng.

4

cung cấp thành viên không có lợi ích của nó nhưng chỉ để theo dõi những người sử dụng trực tuyến, bạn cũng có thể:

  1. Thêm một cột LastActivityDate bảng người dùng của bạn và cập nhật nó từ mã của bạn trong khi đăng nhập và trên tất cả các trang tải cho người dùng đó.

  2. Và để có được những usersonline cho X phút vừa qua chỉ cần sử dụng sau sql

    Select * from Users where LastActivityDate > 
    DATEADD(minute, -(X), GETDATE()) 
    
Các vấn đề liên quan