MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 2008
-
9 juin 2004 à 09:30
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 2010
-
10 juin 2004 à 15:40
Bonjour,
Je vous expose mon probleme :
Je developpe un site ou l'utilisateur doit s'inscrire et s'authentifier. (basique)
Pour l'authentification j'utilise l'authentification par forms
Le web.config a la racine du site est configuré tel que tous les utilisateurs anonymes soient redirigés vers la page d'authentification.
Pour que les utilisateurs puissent s'enregistrer, j'ai logiquement créé un sous repertoire, régit pas un autre web.config, qui accepte tous les utilisateurs anonymes (sinon, les gens ne pourraient jamais s'inscrire).
A la fin de l'inscription, pour pas que les personnes aient a s'authentifier, je le fait automatiquement, ajoute les variables de sessions dont j'ai besoin, plus les redirige vers les pages principales du site (qui sont a la racine).
Cependant, (et en toute logique je pense), de retour a la page d'accueil, la session est perdue (et je me retrouve sur la page d'authentification vers laquelle sont envoyés tous les utilisateurs anonymes).
Y'aurait-il un moyen pour conserver la session ?
Sinon, y'a-t-il un moyen plus simple de faire ce que je vous ai expliqué précédemment ?
Autrement, petite question de sécurité, pour les passwords dans la base de données, j'utilise un simple hash MD5, mais j'imagine qu'il y a mieux, non ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 10 juin 2004 à 13:02
es tu sur que la session est perdu ? comment verifie tu ca ? ca me semble plutot illogique :-/
moi dans ton cas je ferais pas comme ca, je prefererais ecrire un cookie comme ca qd l'utilisateur reviendra sur ton site pas besoin de se reauthentifié ...
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 10 juin 2004 à 13:44
Ouioui, je suis sur que la session est perdue.
Quand l'utilisateur s'enregistre, et que je l'authentifie automatiquement, je le renvoit sur "../index.aspx" qui est ma page principale.
Or au final, il se retrouve sur "login.aspx", qui est la page d'authentification sur laquelle j'amene tous les utilisateurs anonymes via le web.config.
Pour ce qui est du cookie, oui je pourrais faire comme ça..
J'aurais aimé d'une autre manière parce que j'ai pas spécialement envie de stocker de cookies pour l'authentification. Mais je le ferais dans ce cas de figure, et je le detruirait a la fin de la session.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 10 juin 2004 à 14:28
oui mais ne penses tu pas t'etre trompé dans ta session ? essayes de recuperer l'id de la session sur le formulaire d'inscription, et compare les deux que tu auras, si c'est les memes c'est que tu t'es trompé dans ta session.
sinon as tu modifié qq part dans le web.config par exemple qqchose sur les sessions ?
je trouve ca anormal que la session disparaisse. toi non, peut tu m'expliquer pourkoi d'apres toi c'est normal ? :)
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 10 juin 2004 à 14:48
Oui tu as raison, les id de session sont les memes.
En fait, quand j'authentifiais automatiquement l'utilisateur, j'ajoutais le login en variable de session, puis le reorientais vers "../index.aspx". Et la ca plante. Et je me demande pourquoi
Je viens de tester en le reorientant en faisant FormsAuthentication.RedirectFromLoginPage(), et la ca marche bien.
Le probleme, c'est que le RedirectFromLoginPage me renvoit par defaut (quand l'utilisateur va directement sur le formulaire d'inscription sans passer par une autre page) vers la page default.aspx. J'ai beau avoir configuré index.aspx comme page de démarrage sous IIS, rien n'y fait.
Pour contrer ca, j'ai du creer une page default.aspx et y faire un response.redirect("index.aspx"); C'est un peu nul, mais tant que ca marche...
En tout cas ca m'évitera donc d'avoir a passer par des cookies, ce que je ne souhaitais pas !
Merci encore
a++
Mx
Vous n’avez pas trouvé la réponse que vous recherchez ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 10 juin 2004 à 15:01
J'ai cherché dans le MSDN :
The RedirectFromLoginPage method redirects to the return URL key specified in the query string. For example, in the URL http://www.contoso.com/login.aspx?ReturnUrl=caller.aspx, caller.aspx is the return URL that RedirectFromLoginPage redirects to. If the return key does not exist, RedirectFromLoginPage redirects to Default.aspx. ASP.NET automatically adds the return URL when the browser is redirected to the login page specified in the loginUrl attribute in the <forms> Element configuration directive. The method issues an authentication ticket and does a SetForms with the ticket, using the appropriately configured cookie name for the application as part of the redirect response.
donc d'apres ca je pense qu'en querystring tu dois avoir default.aspx ? qd tu vas sur le site tu demandes une page ou tu laisses vide ? si tu demandes index.aspx ca te fait koi ? tu lances le projet via vs.net ou alors directement sans passer par VS.net ? dans IIS as tu encore default.aspx en page de demarage ?
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 10 juin 2004 à 15:02
J'ai cherché dans le MSDN :
The RedirectFromLoginPage method redirects to the return URL key specified in the query string. For example, in the URL http://www.contoso.com/login.aspx?ReturnUrl=caller.aspx, caller.aspx is the return URL that RedirectFromLoginPage redirects to. If the return key does not exist, RedirectFromLoginPage redirects to Default.aspx. ASP.NET automatically adds the return URL when the browser is redirected to the login page specified in the loginUrl attribute in the <forms> Element configuration directive. The method issues an authentication ticket and does a SetForms with the ticket, using the appropriately configured cookie name for the application as part of the redirect response.
donc d'apres ca je pense qu'en querystring tu dois avoir default.aspx ? qd tu vas sur le site tu demandes une page ou tu laisses vide ? si tu demandes index.aspx ca te fait koi ? tu lances le projet via vs.net ou alors directement sans passer par VS.net ? dans IIS as tu encore default.aspx en page de demarage ?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 10 juin 2004 à 15:11
En effet, ca se produit lorsque le ReturnURL est vide. Sinon tout marche bien.
Quand je vais sur le site, ca se passe bien puisque la page par défaut est index.aspx. Donc je me retrouve sur login.aspx?ReturnUrl=index.aspx.
Cependant, si je vais sur mon formulaire d'inscription directement, (et que donc il n'y a pas de returnURL) la il me ramene sur default.aspx. Alors qu'elle n'apparait plus dans IIS.
Sinon, je lance mon projet manuellement, sans passer par vs.net.
Enfin, tout ca n'est pas si grave, mais je me demande comment ca se fait.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 10 juin 2004 à 15:40
ca me parait normal car RedirectFromLoginPage doit avoir été ecrit avec default.aspx en défault :-/ une astuce peut etre dans le web.config qd tu spécifis l'adresse de la page d'authentification rajoute ?returnURL=index.aspx ...
peut etre que ca marchera, et ca evitera de faire un response.redirect, mais le risque c'est que si un utilisateur demande une page spécifique, il y a peut etre un risque de plantage, mais c'est encore à verifier ....