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 :

Login + Redirect sans perdre de données


Sujet :

ASP.NET

  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut Login + Redirect sans perdre de données
    Bonjour à tous,

    Je dois faire un site web avec une zone sécurisé totalisant plusieurs formulaire divers à remplir.

    La liste des utlisateurs ayant accès à cette zone est stockée dans ma base de données.

    Le problème :
    L'utilisateur se rend à la page Login.aspx, s'identifie, entre dans la zone sécurisé. Ensuite il choisi un formulaire et commence à entrée des données...

    Certains formulaire sont très long à remplir alors il y de forts risques que cela lui prenne plus de 20 minutes et que sa session se termine.

    Par conséquent lors d'un postback (clique sur le button sauvegarder) le site devra le rediriger vers vers la page de login.

    Si je fais ainsi, l'utilisateur aura perdu tout le contenu des champs qu'il aura remplie. Pas très gentil

    Ma question : Y-a-til un moyen de présenter à l'utilisateur la fenêtre de login afin qu'il s'identifie de nouveau sans toutefois perdre les données qu'il étaient entrain de sauvegarder ?

    J'ai lu que les cookies auraient été une bonne solution pour mon problème... Mais je ne suis pas très garant de cette solution puisque si l'utilisateur ferme sa fenêtre sans se déconnecter correctement du site alors je ne pourrai pas effacer ses cookies d'autentification, ce qui permetterait à un autre utilisateur (sur la même ordinateur partagé) de ré-ouvrir une page sécurisé sur ce même site web et d'y travailler illégalement.

    PS : J'ai remarqué ici sur le forum de phpBB que lorsqu'on prend trop de temps pour la conception d'un message alors il nous redirige vers la page de login et ensuite il sauvegarde notre message, j'aime bien le concept.

    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut
    Certains formulaire sont très long à remplir alors il y de forts risques que cela lui prenne plus de 20 minutes et que sa session se termine.
    J'imagine qu'il n'y a pas moyen de réduire la longueur des formulaire? Faut vraiment pas avoir fait beaucoup d'ergonomie pour proposer un formulaire aussi long...

    Je dirais AJAX. Quand l'internaute passe d'un champ à l'autre ses données sont automatiquement sauvegardées en base.

    Sinon, il existe des moyens de sauvegarder ça en cookie avec du javascript, mais pas très fiables car la taille d'un cookie est limitée:
    http://www.dynamicdrive.com/dynamici...rmremember.htm
    http://www.dynamicdrive.com/dynamici...mremember2.htm

    je ne pourrai pas effacer ses cookies d'autentification
    Tu n'as qu'à mettre des cookies avec une durée de vie limitée au temps que la fenêtre du navigateur reste ouverte.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Citation Envoyé par Immobilis
    Salut
    Faut vraiment pas avoir fait beaucoup d'ergonomie pour proposer un formulaire aussi long...
    Ce n'est pas DU TOUT une question d'ergonomie. En fait c'est un formulaire de soumission d'un de nos produits. Il y a environ 50 champs qui doivent être TOUS sur la même page pour bien s'y retrouver. Certains champs sont en corrélation avec d'autres (javascript). De plus, c'est assez complex et l'on doit bien réfléchir avant de faire des choix.

    Citation Envoyé par Immobilis
    Tu n'as qu'à mettre des cookies avec une durée de vie limitée au temps que la fenêtre du navigateur reste ouverte.
    Comment faire pour mettre le cookie valide seulement pendant la durée de vie du navigateur, si je ne sais pas quand il fermera la fenêtre ? Prenons le cas d'une panne de courant par exemple, à ce moment là je ne pourrai effacer le cookie ou le -validé côté javascript, puisque l'ordinateur client s'est arrêter incorrectement. À moins que je ne comprenne pas bien ce que vous voulez dire...

    Et par rapport au forum phpBB, quelqu'un sait comment ça fonctionne ?
    Je veux dire, quand on prend trop de temps pour écrire un post (la session expire), il nous redirige vers la page de login. Ensuite il nous redirige à la page de conception du post et pour terminer il nous confirme que le message à bien été sauvegardé ?

  4. #4
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    Je pense à plusieurs solution :

    1) Rallonger la durée de vie de ta session.
    2) ne pas utilisé le web.config pour interdire les utilisateurs et Stocker dans un champ caché (ou un cookie) login et pssword afin de pouvoir realiser une verification delogin sur ta page lors du psotback.
    3) comme le dit immobilis , faire de l'ajax

    Pour la panne de courant on n'y peut rien. Mais sinon tu peux placer une fonction JS a l'evenement unload du body je crois pour enlever ton cookie lors de la fermeture du navigateur.. .

    MAis à mon avis la solution numero 3 est de loin la meilleure. tu conserves ta session et en plus en cas de panne de courant, tes utilisateurs conserveront ce qu ils ont commencé a faire!

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par Erakis Voir le message
    Ce n'est pas DU TOUT une question d'ergonomie.(...)
    Certains champs sont en corrélation avec d'autres (javascript). De plus, c'est assez complex et l'on doit bien réfléchir avant de faire des choix.
    Je vois pas de contradiction avec l'ergonomie. C'est justement parce que c'est complex qu'il faut passer par des étapes. Les contrôles côté client sont lourd et peu sûr. Enfin.

    En ce qui concerne le cookie, il suffit de lui donner une durée de vie à -1 je crois. Dès que le navigateur sera fermé il sera inutilisable.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Bonjour à tous,

    Pour ce qui est quesiton d'augmenter la durée de vie de la session sur IIS ou dans le web.config j'y avais déjà songé mais je ne crois pas que ce soit une bonne idée côté resource système du serveur (mémoire). Toutefois, merci quand même pour l'idée.


    Si j'ai bien compris l'histoire avec les cookies, vous me proposer lors du login de créer un cookies qui stock par exemple le ID de l'utilisateur (crypté) et pour chaque postback je viens vérifier si la session est encore valide.

    Si OUI alors le postback s'effectue avec succès.
    Si NON alors je vais tenter de lire le cookie et vérifier s'il est valide.

    Si NON alors l'utilisateur est redirigé vers la page de login.
    Si OUI alors le système reconnect l'utilisateur automatiquement et procède au postback avec succès.

    Si l'utilisateur clique sur le bouton "Logout" alors j'efface ce cookie.
    Si l'utilisateur ferme son navigateur alors j'intercepte l'événement unload du body du navigateur et à ce moment là j'efface le cookie.

    Je sais que c'est un peu extrémiste mais prenons le cas où un ordinateur est partagé par 2-3 personnes avec le même compte utilisateur windows. Imaginons ensuite qu'un utilisateur étant connecté subisse une perte de courant et que le cookie ne puisse être détruit ou dévalidé correctement. Cela permetterai donc à un autre utilisateur suite à la panne de courant (à l'intérieur du timeout de la session du server) d'accéder à une page sécurisé en entrant directement le bon path !

    Bref, les cookies sont une très bonne solution mais je ne peux permettre de laisser, une panne de courant, causer une faille de sécurité sur ce site web.

    L'idée d'utiliser un script AJAX afin de prévenir que la session tombe en timeout est intéressante puisqu'elle ne présente pas vraiment de faille de sécurité. Voici un lien vers ce dont je parle : Prevent session timeout in your ASP.NET AJAX
    Donc, tant que l'utlisateur garde sa fenêtre ouverte, il reste connecté au site web. Lorsqu'il la ferme tout est perdu car aucun système de cookie existera pour recréer sa session. Donc la session prendra fin avec le timeout du serveur ou lorsqu'il cliquera sur le bouton "Logout".

    Citation Envoyé par Immobilis
    Je dirais AJAX. Quand l'internaute passe d'un champ à l'autre ses données sont automatiquement sauvegardées en base.
    Cette solution est intéressante, mais est-ce possible avec la plupart des navigateurs d'intercepter CORRECTEMENT l'événement onblur ?

    Citation Envoyé par Immobilis
    C'est justement parce que c'est complex qu'il faut passer par des étapes
    Peut-être avez-vous raison mais parfois ce n'est pas possible. Prenez les logiciels d'impôt (en version web) par exemple, où parfois vous pouvez passez plus de 20 minutes à chercher des papiers et à comprendre ce que vous devez y entrer. Néamoins, je comprend très bien ce que vous me dites.

    Merci à tous pour votre aide, c'est apprécié

  7. #7
    Membre expérimenté
    Inscrit en
    Janvier 2005
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 218
    Par défaut
    Pour ce type d'application, rien de mieux qu'un client lourd

  8. #8
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par Erakis Voir le message
    Prenez les logiciels d'impôt (en version web) par exemple, où parfois vous pouvez passez plus de 20 minutes à chercher des papiers et à comprendre ce que vous devez y entrer. Néamoins, je comprend très bien ce que vous me dites.
    Concernant cet exemple les ecrans sont court et en validant on sauvegarde la saisie.
    J'ai parfois du remplir des sondages dans mon ancienne boite. La saisie complete prenait plus de 20 minutes, mais chaque écran 30 secondes. Les écrans qui apparaissaient étaient parfois liés à la saisie précédente. Je ne crois pas à ton histoire de c'est pas possible. Y'a juste un effort de conception plus important.
    Citation Envoyé par Erakis Voir le message
    Bref, les cookies sont une très bonne solution mais je ne peux permettre de laisser, une panne de courant, causer une faille de sécurité sur ce site web.
    Je te suggère de faire le test. Créé un cookie dont la durée de vie ne va pas plus loin que le temps que la fenetre reste ouverte. Arrache le cable d'alim de ton PC. Redémarre, relance ton site et vérifie si tu te reconnecte automatiquement. On en reparle quand tu as fais le test parce que là tu n'est pas très objectif et tes assertions ne repose sur rien.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Membre expérimenté
    Inscrit en
    Janvier 2005
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 218
    Par défaut
    Tu peux toujours mettre de l'Ajax dans tes pages et sauvegarder tous tes champs avec un Timer.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/12/2010, 14h49
  2. Redirection sans perdre son référencement
    Par jimmplan dans le forum Référencement
    Réponses: 11
    Dernier message: 10/05/2010, 23h56
  3. Rafraichir un div sans perdre les données du formulaire
    Par Krustig dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/01/2008, 23h32
  4. [phpMyAdmin] réinstaller phpMyAdmin sans perdre les données
    Par jul.oob dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 03/05/2007, 15h26
  5. Mise à jour BDD sans perdre les données
    Par penchu dans le forum Accès aux données
    Réponses: 4
    Dernier message: 07/02/2007, 11h21

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