Probleme d'authentification

Signaler
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021
-
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
-
Bonjour,
lors de la page d'authentification, il vérifie le login et mot de passe à partir d'un fichier XML mais il n'accède pas à la page voulue, j'ai sais pas c'est quoi le problème pourtant le code s'exécute.
merci de m'avoir aider
voila le code du bouton "connexion"

public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            bool result = MvcApplication.Users.Any(u => u.Login == model.login && u.Password == model.Password);

            if (result)
            {
                return RedirectToLocal(returnUrl);
            }
            return View(model);

18 réponses

Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Je vais me répéter une 3eme fois, le code semble correct, j’ai donc besoin de connaître le contenu des variables.
Je t’ai mis plus haut un lien vers un tuto sur l’utilisation des outils de déboggage.
Tant que tu ne fournis à minima model.login, model.password, et les propriétés Login et Password de chaque item dans MvcApplication.Users impossible pour moi de te dire si le problème est là, avant ou après
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Bonjour

Quand tu exécutes en pas à pas que se passe t il?

Pour tes prochains posts, merci d’utiliser les balises de codes, voir ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

Merci Mr de me repondre, comment faire l'exécution pas à pas?
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

c 'est bon Whismeril, j'ai fait l'exécution pas à pas mais j'ai rien remarqué,
le problème est le programme s'exécute bien et il vérifie le login et password dans fichier xml mais il ne se dirige pas vers la page d'accueil de l'application et les champs deviennent vide
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Ok,

Donc le problème se situe peut-être dans la méthode RedirectToLocal.
Que se passe t il dans cette méthode ?
Quel en est le code?
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Je t'ai demandé d'utiliser les balises de code et je t'ai mis un lien vers le petit tuto pour le faire correctement.

Je t'ai aussi demandé ce qu'il se passe dans cette méthode et tu n'en dis rien.

Si par cas, ça aller dans RedirectToAction mêmes choses
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

désolé M.
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Et donc que se passe t il en pas à pas ?
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

Cette méthode async n'a pas d'opérateur 'await' et elle s'exécutera de façon synchrone. Utilisez l'opérateur 'await' pour attendre les appels d'API non bloquants ou 'await Task.Run(…)' pour effectuer un travail utilisant le processeur sur un thread d'arrière-plan. REM.Web
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Ha et je suppose que ce message d'erreur apparait à cette ligne
return Redirect(returnUrl);
ou celle là
return RedirectToAction("Index", "Home")


Alors tu peux tenter (au petit bonheur la chance) d'utiliser
await Task.Run(()=> Redirect(returnUrl));
(ou l'autre si c'est elle qui plante) mais ça risque de planter plus loin.

Le principal problème me semble t il c'est que le niveau de ce code n'est pas en corrélation avec tes réponses.
Tu postes un code dans le quel le pattern MVVM est correctement implémenté ce qui dénote un bon niveau de l'auteur, mais tu ne sais pas exécuter en pas à pas, ce qui est le B A BA du déboggage et donc tend à faire penser que tu débutes (c'est pas grave on y est tous passé)

Quand tu trouves, tu ne vas pas plus loin que la méthode X, sans aller voir ce qui se cache dans Y, puis Z etc... ce qui, là encore, incite à penser que tu débutes.

Et quand on te pousse à gratter un peu, on tombe sur un problème de multithreading, que tu copies colles sans explications ni tentative de résolution.

Bref ça donne l'image que tu es dépassé par ce code. Là encore ce n'est pas grave, mais ce qui l'est un peu c'est que cette information est primordiale pour essayer de t'aider correctement. Et le contexte aussi
  • par exemple, tu l'as trouvé sur le web, tu l'as copier sans trop chercher à comprendre et ça ne marche pas.
  • Ou encore, tu es en stage, et on t'a donné ça sans même chercher à savoir si c'est à ta portée...
  • ou encore autre chose.


Bref, si await task.run ne marche pas, il va nous falloir plus d'informations, un peu sur toi (ton niveau), l'origine de ce code, le contexte d'utilisation. Il faudra plus de code et le contenu des variables quand ça ne marche pas.


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

Merci de me répondre vous êtes très gentil,
oui je suis débutant en asp.net et c# et je cherche toujours sur internet les codes et j'essaye de les comprendre et j'apprend toujours de ces problèmes.
j'espère que c'est une bonne méthode d'apprentissage.
Merci, je suis entrai d'essayer votre solution
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
j'espère que c'est une bonne méthode d'apprentissage.
pas vraiment.

Ce qu'il faudrait faire, c'est d'abord apprendre correctement les bases (y compris le déboggage). Ici tu as un bon cours gratuit de C# (en winform) https://tahe.developpez.com/dotnet/csharp/ ne néglige aucun chapitre, même si de prime abord ça te parait simple et acquis, tu pourrais y découvrir un concept important qui t'avait échappé (je parle en connaissance de cause).
Je n'ai pas de bon cours d'ASP à te proposer parce que je n'en ai jamais fait.

Quand tu auras bien suivi le cours de Tahé, tu pourras aller lire celui de fdorin sur les pool de threads, je te préviens ça va piquer beaucoup plus, pourtant c'est ton problème du jour https://fdorin.developpez.com/tutoriels/csharp/threadpool/part1/

Et puis, il y a celui-ci sur les outils de deboggage https://docs.microsoft.com/fr-fr/visualstudio/debugger/debugger-feature-tour?view=vs-2019
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

Merci bcp,
la solution n'a pas marché, je dois chercher une autre solution, car la classe ne fait pas la comparaison
merci
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Quelle comparaison ?
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

Pour s'identifier j'ai configuré le web.config avec userSection avec login et mot de passe. Donc pour se connecter il faut voir si login et mdp entrés sont les mêmes que dans le fichier web.config. donc j'ai fais tous mais toujours ne connecte pas
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Que ça ne marche pas, j’ai compris, d’ailleurs le simple fait que tu viennes sur un forum suffit à le savoir.

Mais, au titre de me répéter, pour essayer de t’aider il faut que tu donnes des infos concrètes.
Si tu parles de comparaison, on peut supposer que tu as vu un comportement anormal, et comme je t’ai proposé un tuto sur l’utilisation des outils de déboggage pour notamment vérifier si le contenu des variables est celui que tu attends ou non.

Donc quand je te demande quelle comparaison, j’attends toutes ces informations
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

Bonjour Whismeril,
Pouvez vous m'aider a propos du code d'authentification j'arrive pas a authentifier depuis le fichier web.config
Merci d'avance
Messages postés
16351
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 octobre 2021
567
Oui, je veux bien essayé de t'aider.
Mais je ne suis pas magicien.

J'ai besoin que tu me me dises, précisément quelle comparaison ne se fait pas et quel est le contenu des variables dans cette comparaison
Messages postés
17
Date d'inscription
dimanche 13 juin 2021
Statut
Membre
Dernière intervention
16 octobre 2021

Merci bcp Whismeril vraiment vous êtes très gentil,
voici le code du fichier web.config qui contient la liste des utilisateurs ( monta et karim):
 <section name="userSection" type="REM.Web.Configuration.UserSection"/>
  </configSections>
  <userSection>
    <users>
      <user name="monta" login="monta" pwd="0000"/>
      <user name="karim" login="karim" pwd="0000"/>
    </users>
  </userSection>

et voici le code c# du bouton qui faire authentifier::
        public async Task<ActionResult> LoginAsync(LoginViewModel model, string returnUrl)
         {
             if (!ModelState.IsValid)
              {
                  return View(model);
              }
var result = MvcApplication.Users.Any(u => u.Login == model.login && u.Password == model.Password);
           if (result)
              {                
                 await Task.Run(() => Redirect(returnUrl));
             }
              return View(model);
     }