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 :

Problème User.Identity.Name / User Login


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Par défaut Problème User.Identity.Name / User Login
    Bonjour à tous,

    Je rencontre actuellement un problème sur le développement de mon site web.
    Cela concerne la casse du nom du user loggué, en effet avec le contrôle asp loginview, le client peut se connecter avec son user sans respecter la casse de son login. (pour exemple si le client s'est inscrit sur le site avec le user ToTo il peux très bien se connecter au site en tapant toto).

    Le problème est que j'utilise le user saisi lors de l'inscription pour alimenter un certains nombre de tables.
    Et lorsque le client effectue des actions (sur des gridviews, des formulaires, etc..) je vérifie que le User.Identity.Name correspond bien à la zone user des tables sur lesquels il s'appréte à effectuer une action.

    Mais la condition (pour exemple en C#) if(NomUser != User.Identity.Name) ne se remplit pas car la comparaison des strings prend la casse en considération.

    Comment faire pour résoudre ce problème ?
    - Existe-t-il un moyen de forcer la casse au moment du login du client lorsqu'il ne la respecte pas pour se connecter?
    - Dois-je modifier mon modèle de données afin de travailler sur un uniqueidentifier pour les users?
    - Dois-je forcer son matricule de connexion moi-même à celui présent dans ma tables user membership (fonction global.asa) ?

    Merci d'avance pour votre aide.

    Emilien

  2. #2
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    Si j'ai bien compris , ce sont plus des rôles que tu as besoin . Peu importe le login du client , il aura un rôle et dans ton loginview , tu specifie le roleGroup .

    Si ton user est dans le groupe TOTO , alors il verra afficher telle ou telle fonctionnalité et donc faire telle ou telle action qui sont propres au groupe auquel il appartient .

    Bon travail

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Par défaut
    Salut Issou,

    Tout d'abord merci de l'interêt que tu portes à mon post.

    Par contre je pense que nous nous sommes mal compris. Rien de mieu qu'un exemple concret du problème :

    1) Un nouveau client s'inscrit à mon site web en prenant comme pseudo : TotO (majuscule sur T et sur le O). Le souci est qu'il peut très bien se logguer en tapant comme login toto (tout en minuscule).

    2) Sur le site web il y a un fonction qui permet de mettre un lien d'amis entre utilisateur.
    Il l'utilise donc pour étoffer sa liste d'ami et essaye de se demander lui-même en ami. (...)
    S'il est connecté avec son login sans avoir respecter la casse (donc toto), il pourra très bien se demander lui-même en ami car la demande sur le pseudo présent en table TotO est différent de celui disponible dans le User.Identity.Name.

    En effet afin de bloquer cette possiblité j'ai englobé ma fonction de demande d'ami par la condition :

    if(NomDeLaPersonneQueJeDemandeEnAmi != User.Identity.Name)
    {
    /*appel procedure stockée de creation du nouveau lien dans ma table Ami.
    }
    else
    {
    resultat.text = "Vous ne pouvez vous demander vous-même en ami";
    }

    La condition donne donc :
    if(TotO != toto) qui est donc valide et le traitement de rajout de la relation en table fonctionne, ce que je ne veut pas.

    Ainsi comment puis-je faire pour forcer le client à se logguer avec le user qu'il a saisi à l'inscription en vérifiant la casse.
    De cette manière le client ne devrait pas pouvoir se logguer en tapant toto sur le site.

    J'espere que cela apportera un peu de clarté à mon l'explication de mon problème.

    Merci d'avance,

    Emilien

  4. #4
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    fallait le dire plus tôt

    =>
    string.Compare("toto", "toTo", true);

    le boolean met le paramètre "Ignorecase" à true;

    Donc fais plutôt cà au lieu de "!="

    Bon travail .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Par défaut
    Effectivement cela devrait résoudre le problème lors de mes comparaisons de chaine de caractères.

    Par contre je vais toujours me retrouver avec des incohérences dans mes tables de données.

    Aurais-tu une idée afin de forcer l'identification au site avec le user identique à celui saisi lors de l'inscription au niveau de la casse?

    Dois-je faire une fonction qui le fait pour les clients lors du processus de LogginIn?

    Merci d'avance

    Emilien

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Par défaut
    Bonjour,

    Voila donc pour résoudre le problème une petite procédure stockée qui va récupérer dans la table des user le login présent en conservant la casse (SELECT User FROM User WHERE User=@User COLLATE French_CI_AI), lors du LogginIn de mon client.

    Emilien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. HttpContext.Current.User.Identity.Name et IIS 7
    Par PatStan17 dans le forum Développement Web avec .NET
    Réponses: 2
    Dernier message: 09/07/2010, 08h33
  2. HttpContext.Current.User.Identity.Name et IIS 7.5
    Par PatStan17 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/06/2010, 18h48
  3. Réponses: 0
    Dernier message: 24/04/2010, 10h04
  4. Problème pour récupérer le User Name
    Par akaii dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/04/2010, 22h25
  5. Perte de la valeur dans Page.User.Identity.Name
    Par Nosper dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/01/2007, 13h24

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