2009-10-30 5 views
7

J'utilise .NET 3.5. En outre, l'authentification par formulaire est utilisée.ASP.NET | Authentification par formulaire | Obtenez TOUS les utilisateurs connectés (liste de tous les utilisateurs ou compte)

Est-il possible d'obtenir la liste des TOUS les utilisateurs connectés ou un count dans ASP.NET?

Note: Je ne suis pas en utilisant les appartenances et rôles

+2

Notez également, peu importe ce que vous faites, ce nombre est susceptible d'être éteint. –

+0

J'ai dû faire quelque chose * comme * cette fois pour limiter la charge sur un site Web. Cependant, j'ai utilisé le début/la fin de la session. –

Répondre

6

Non il n'y a pas moins

  1. Vous avez défini un dans votre propre code

  2. Vous utilisez la valeur par défaut Fournisseur d'appartenance ASPNET dont la méthode GetNumberOfUsersOnline() est définie.

  3. Vous utilisez un fournisseur d'appartenances personnalisé et ont fourni une implémentation pour vous-même

méthode GetNumberOfUsersOnline() La valeur par défaut ASPNET fournisseur d'adhésion calcule le nombre d'utilisateurs en ligne en interrogeant la base de données SQL Server et la vérification de la LastActivityDate stockées contre chaque utilisateur par rapport à la propriété UserIsOnlineTimeWindow définie que vous pouvez définir dans web.config. Si le LastActivityDate est supérieur à l'heure actuelle moins la valeur UserIsOnlineTimeWindow (qui représente les minutes), un utilisateur est considéré comme en ligne.

Si vous vouliez faire quelque chose de similaire, vous pourriez envisager d'implémenter une méthode similaire. vous pouvez voir le code pour les fournisseurs par défaut par downloading the source code. Pour compléter votre image, vous pouvez également exécuter aspnet_regsql.exe afin que vous puissiez voir les procédures stockées que les fournisseurs par défaut utilisent.

+0

À quel point est-il difficile de mettre en œuvre un fournisseur d'adhésion? – Chicago

+0

pour mettre en œuvre votre propre est assez simple. Consultez cet article- http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx –

+0

Nice à savoir sur la propriété UserIsOnlineTimeWindow. –

3

l'authentification par formulaire stocké tout ce qu'il est état dans un cookie qui est passé à les navigateurs des utilisateurs.

(ce qui permet l'authentification des formulaires de travailler sur une ferme Web)

donc il n'y a pas moyen d'obtenir une liste des utilisateurs connectés, etc. à partir d'authentification standard des formulaires.

formulaires Cependant l'authentification a des événements qu'il se déclenche quand il authentifie un utilisateur, etc. Vous pouvez mettre à jour votre propre liste d'utilisateurs dans ces événements - (attention avec verrouillage si vous le faites)

Cependant en tant qu'utilisateur sera "connecté de" lorsque le cookie est expiré par les navigateurs, vous trouverez très difficile de supprimer correctement tous les utilisateurs connectés au bon moment à partir de votre liste.


Vous pouvez être mieux de stocké au moment où vous dernière, chaque utilisateur puis d'avoir une liste d'utilisateurs que vous avez vu à dire les 5 dernières minutes. E.g garder une liste de utilisateurs actifs.

1

J'ai utilisé Session_Start et Session_End sous Global.aspx. il fonctionne la plupart du temps sauf que l'utilisateur ferme son navigateur.le côté serveur doit attendre que la session expire pour supprimer l'utilisateur.

4

fournisseur d'adhésion ont ses avantages mais juste pour suivre les utilisateurs en ligne, vous pouvez aussi:

  1. Ajouter une colonne LastActivityDate à votre table d'utilisateur et le mettre à jour à partir de votre code lors de la connexion et sur toute la page charges pour cet utilisateur.

  2. Et pour obtenir le usersonline pour le passé X minutes il suffit d'utiliser les éléments suivants sql

    Select * from Users where LastActivityDate > 
    DATEADD(minute, -(X), GETDATE()) 
    
Questions connexes