IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

1 session par utilisateur


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Par défaut 1 session par utilisateur
    Hello,

    dans un site aspnet avec une sécurité aspnet, on a des utilisateurs qui ouvrent des sessions.

    Je souhaite mettre en place un système qui empèche les sessions simultanées pour le même utilisateur.

    Par exemple un utlisateur ouvre une session sur l'ordi A, et ensuite il en ouvre une seconde sur l'ordi B. Comment faire pour que la session de l'ordi B soit fermée automatiquement ou qu'il ne puisse pas ouvrir de session sur l'ordi B ?

    Merci

  2. #2
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ton souci n'est pas trés simple à mettre en oeuvre mais j'ai une idée de bon amtin.

    Avant tout je voudrais savoir ce que tu utilise pour gérer tes utilisateurs :
    MemberShip ou développement maison ?

    Sinon, d'un point de vue trés théorique, mon idée est la suivante :
    Lorsque ton utilisateur est connecté, l'information est stockée quelque part. Si c'est avec un MemberShip, faut chercher le paramettre qui gère ça, si c'est avec un développement maison, ben c'est toi qui sait.
    Donc tu peux facilement interroger la base de données ou autre pour savoir si une connexion est déjà, donc tu a les moyens de la fermer. Ta connexion est faite (normalement) avec un identifiant d'utilisateur et un identifiant de machine (souvent l'adresse IP).

    Bilan, lorsque tu gère l'ouverture d'une conexion pour un utilisateur, tu commence par fermer toutes les éventuelles connexions qu'il peut avoir.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2004
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 210
    Par défaut
    Tout d'abord merci pour ton aide.
    Citation Envoyé par zooffy Voir le message
    Avant tout je voudrais savoir ce que tu utilise pour gérer tes utilisateurs :
    MemberShip ou développement maison ?
    MemberShip

    Pour empècher le login de fonctionner, c'est facile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Protected Sub Login1_LoggingIn(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LoginCancelEventArgs) Handles Login1.LoggingIn
            If Membership.GetUser(Login1.UserName).IsOnline Then
                Login1.InstructionText = "L'utilisateur " & Login1.UserName & " est déjà connecté."
                e.Cancel = True
            End If
        End Sub
    Concernant le paramètre qui stocke le IsOnline, le problème avec MemberShip, c'est qu'il n'existe pas.
    Le IsOnline est en fait calculé avec 2 paramètres : userIsOnlineTimeWindow et LastActivityDate (http://msdn2.microsoft.com/en-us/lib....isonline.aspx)

    J'ai essayé de mettre userIsOnlineTimeWindow à 1 minute, si l'utilisateur ne fait rien pendant 1min, il devient offline mais est toujours connecté et authentifié.

    On est donc confronté à un souci... d'autant plus que http est Stateless.

    J'ai donc une idée pour contourner le problème :

    Un timer ajax qui chaque minute met à jour LastActivityDate.

    Ainsi tant que la page est ouverte l'utilisateur LastActivityDate évolue et le IsOnline est juste.

    Maintenant on a encore un problème : il faut gérer la déconnexion, je propose de mettre à jour LastActivityDate = Now - 1 minute pour que l'on puisse de nouveau se connecter immédiatement

    Je pense que je vais encore avoir un souci avec le cas suivant :
    On a un user qui se logue avec un cookie persistant. Il ferme sa fenètre sans se déloguer et va rouvrir une session ailleurs. Comment va réagir le premier navigateur lors de la réouverture avec un cookie valable ?

    Enfin voilà, merci pour tout commentaire.

Discussions similaires

  1. Une session par utilisateur
    Par olysmar2 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/07/2014, 12h54
  2. Une session par utilisateur
    Par rambc dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2013, 09h00
  3. Comment calculer la durée de session par utilisateur
    Par elkhansa dans le forum QlikView
    Réponses: 0
    Dernier message: 11/12/2012, 14h06
  4. Réponses: 1
    Dernier message: 13/08/2008, 17h43
  5. Réponses: 1
    Dernier message: 16/05/2007, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo