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 :

Comment faire pour passer une valeur du client vers le serveur sans session.


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Points : 126
    Points
    126
    Par défaut Comment faire pour passer une valeur du client vers le serveur sans session.
    Bonjour,
    Description :

    J’ai une application web aspx qui se connecte à un web service d’une autre application. Pour me connecter à ce web service je dois m’identifier pour exécuter des taches et me déconnecter. Mais on peut avoir des pannes entre les différents systèmes mais il faut que se soit transparent chez le client, ce qui veut dire pas de déconnection. J’ai sérialisé mes objets de sessions et mes objets spécifique dans une base de données commune avec un identifiant unique dans un cookie.

    Voici mon problème,

    Cookie, cette méthode a des limitations ; lorsqu’un client ferme son browser (clique sur la petit croix en haut à droite) et relance son browser automatiquement il sera reconnecté sans authentification.
    Pour résoudre cette limitation, je recherche comment mettre un identifiant unique directement dans la page aspx, car de cette manière lorsque le client relance son browser, comme l’identifiant n’est pas remplie ce qui signifie que c’est une nouvelle session. Vous allez me dire qu’il est facile de me mettre un textbox « hidden » et de récupérer la valeur. Mais pour un peu compliquer la chose, il possible de perte la session ASP.NET ou même de passer sur un autre serveur (en cas de souci interne).
    Ou encore de mettre un identifiant dans l’adresse barre, mais il est très facile de faire un copier coller pour outrepasser.

    Simulation d’un processus,

    1) Je lance mon brower pour la 1 fois
    2) le serveur remplie ma textbox caché avec une valeur (identifiant).
    3) Application Web Crash, recycle son pool ou change de serveur(en cas de problème sérieux)
    4) Le client clique sur un élément de la page.
    5) Comme j’ai pu lire l’identifiant dans la tex box caché je pu restauré la session en cours
    6) Par contre si il avait redémarré son browser j’ai pu l’identifier car il n’avait d’identifiant la texte box cachée.

    Comment faire pour passer une valeur du client vers le serveur dans une page aspx sans session .net active ? Ou peut être avez-vous d’autres idées. (Mais je ne peux pas modifier l’infrastructure)

    Merci d'avance de votre aide.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    1- Tu peux utiliser le ViewState
    2- Tu peux configurer le cookie pour qu'il soit détruit à la fermeture du browser

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Points : 126
    Points
    126
    Par défaut
    Merci, J'ai testé les viewstate mais ca ne marche pas car je pense que c'est parce que je n'utilise pas de contrôle dans ma page aspx. C'est un genre du viewer html, je rajoute le code html avec un controle literalhtml dans lequel je n'ai pas de "Form" et les links qui se trouvent dans cette page ne font pas de "post" donc je pense que le viewstate ne se trouve pas dans la page.

    Et avec le cookie, j'ai un autre souci que je ne comprends pas a chaque fois que la page se reload sans fermeture du browser l'action d'effacer mes cookies est lancé.

    J’utilise pour ca ce que j’ai lu dans la FAQ
    Il faut tout d'abord intercepter l'événement sur le client. Pour cela, incluez dans le header de vos pages le script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script id="clientEventHandlersJS" language="text/javascript">
    <--
     
    function window_onbeforeunload()
    {
      window.navigate('disconnect.aspx');
    }
     
    //-->
    </script>
    Ensuite, il faut changer le tag body:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <body language="javascript" onbeforeunload="return window_onbeforeunload()">
    A la fermeture du navigateur, la fontion javascript window_onbeforeunload est appelée et la page disconnect.aspx est chargée. Il ne reste plus qu'à fermer la session dans le Page_Load de cette page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void Page_Load(object sender, System.EventArgs e)
    {
    Session.Abandon();
    }
    Merci encore de votre aide

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Oui, onbeforeunload est appelé à chaque postback ou changement de page

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Points : 126
    Points
    126
    Par défaut
    oui mais alors comment faire pour capturer l'événement de la fermeture du brower ?

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par zoltix Voir le message
    oui mais alors comment faire pour capturer l'événement de la fermeture du brower ?
    Tu peux pas

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/11/2012, 19h28
  2. Réponses: 5
    Dernier message: 27/04/2009, 16h15
  3. Réponses: 9
    Dernier message: 09/03/2007, 15h01
  4. Réponses: 1
    Dernier message: 31/10/2006, 11h15
  5. [Conception] Comment faire pour bloquer une valeur pendant 24H
    Par lolodelp dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/07/2006, 15h46

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