2010-11-02 30 views
1

J'utilise l'abonnement SQL ASP.NET fourni & Fournisseurs de rôles dans mon application.Empêcher la connexion multiple à partir du même nom d'utilisateur

Comment puis-je empêcher le même utilisateur de se connecter à partir de différentes stations de travail en utilisant les mêmes informations d'identification? Je peux imaginer utiliser l'adresse IP pour cela, mais je ne sais pas par où commencer ...

Qu'en est-il des utilisateurs derrière le même routeur? Y at-il un moyen de les empêcher d'accéder à partir de différents PC clients?

Répondre

2

IP ne serait pas un très bon moyen car tous les utilisateurs derrière un réseau local d'entreprise typique vous apparaîtraient comme se connectant à partir de la même adresse IP. Une solution de contournement consiste à déconnecter l'utilisateur qui est connecté avec les mêmes informations d'identification, en conservant uniquement le dernier connecté. Cela peut être réalisé en conservant l'identifiant ou le nom de l'utilisateur connecté dans Application ou DB. Dès qu'une nouvelle session utilisateur est démarrée, vérifiez si l'utilisateur est présent dans Application/DB. Si c'est le cas, marquez-le sale. Dans les pages, vérifiez la présence de UserID/Nom dans l'application et si l'utilisateur est marqué comme sale, invoquez une déconnexion. Cela peut être implémenté dans une BasePage dont toutes les pages du site/de l'application héritent.

1

Peut-être que vous pouvez stocker tout ce que vous utilisez pour identifier de manière unique l'utilisateur comme un UserId dans ApplicationState et vérifier si cette valeur n'est pas nulle. Vous ajoutez leur valeur UserId à ApplicationState au début de SessionState, puis à la fin de SessionState, supprimez cette valeur de ApplicationState. ApplicationState est une application globale pour l'application Web, ce qui signifie qu'elle est accessible à tous les utilisateurs et toutes les sessions alors que SessionState est limité à un seul utilisateur et à une seule session.