Yii::app()->user->id; est de retour nom d'utilisateur au lieu du numéro d'identification
J'ai un problème très étrange que sur une machine Yii::app()->user->id;
renvoie le nom d'utilisateur, mais sur une autre machine qui exécute un code identique, je reçois le numéro d'identification comme prévu.
Comment pourrait - Yii::app()->user->id
obtenir le nom d'utilisateur? Qu'ai-je manqué?
Avez-vous une coutume UserIdentity classe dans votre application? Si oui, où avez-vous mis il et quel est son nom de classe?
Je suis à l'aide de Yii::app()->user->nom d'utilisateur de l'id d'utilisateur.
Je suis à l'aide de Yii::app()->user->nom d'utilisateur de l'id d'utilisateur.
OriginalL'auteur hurshid | 2011-05-27
Vous devez vous connecter pour publier un commentaire.
tout d'abord,nous allons jeter un oeil à ce qui s'est passé après la connexion de l'utilisateur.
après
si
ensuite, nous allons passer à l'action login
et que derrière le login?
J'ai d'analyse de la source de yii
l'idée principale est la
en fonction de connexion CWebUser classe.
ci-dessous est changeIdentity fonction
d'autre part:
Retournons le problème
Cela signifie pour exécuter le getId() la méthode de vous classe qui s'étend CWebUser, et vous config dans les sites(la racine de votre application)/protected/config/main.php comme ceci:
Dans mon cas ,la classe s'étend CWebUser est WebUser.
Dans WebUser ,il n'y a pas getId() la méthode la méthode héritée de CWebUser, parce que l'Internaute s'étend de CWebUser. c'est donc getId() la méthode de CWebUser.
https://github.com/yiisoft/yii/blob/1.1.13/framework/web/auth/CWebUser.php#LC287
alors quand est - '__' id du jeu?
évidemment, il est fixé à la déclaration de changeIdentity fonction:
et où l'arguement $valeur de l'id de venir?
nous le savons au code ci-dessous dans la classe CWebUser:
la
nous ne pouvons donc ajouter une fonction getId dans $d'identité, il signifie que nous ajoutons getId d'une fonction dans
UserIdentity qui s'étendent CUserIdentity,comme ceci:
et
lors de la connexion de l'utilisateur avec succès, nous pouvons passer à l'user_id à setId($id) en fonction authentification de UserIdentity qui s'étend CUserIdentity ,comme ceci:
fonction publique authenticate()
{
Je suis désolé ,je suppose que je dois mal comprendre la question..je vais jeter un oeil au code source de yii,et de modifier la réponse encore une fois,Merci!
- Je trouver et résoudre le problème. veuillez prendre un coup d'oeil, et je suis heureux de faire de rappel!
OriginalL'auteur fucus on
Vous devez remplacer la méthode
getId()
dans votreUserIdentity
classe.Dans votre identité de classe, il suffit d'ajouter ceci:
et puis, enfin, vous pouvez définir l'id en utilisant
Plus à ce sujet, veuillez consulter ce lien:
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#defining-identity-class
OriginalL'auteur Syakur Rahman
Essayez cela, définissez le nom d'utilisateur:
OriginalL'auteur ideawu
vous avez deux façons de résoudre ce problème:
à la fois moyen utilise $_SESSION pour enregistrer la valeur.
alors vous pouvez retriwe la valeur comme ça:
OriginalL'auteur Elbek
essayer cette
Yii::app()->user->getId()
OriginalL'auteur Ashwani Panwar
Même j'ai eu le même problème, tout est ok mais plutôt d'id, j'ai obtenu un nom d'utilisateur.
Vous vérifiez votre Useridentity fichier.
Dans la partie, vous risquez de manquer quelque chose comme (pointeur->).
Espère que ça va vous aider hurshid.
OriginalL'auteur sally
yii d'installation par défaut des ensembles id d'utilisateur comme le nom de l'utilisateur (admin ou démo par défaut) .
Si vous modifiez le script utilisateur et l'utilisation de sql et de faire les modifications recommandées pour cela, l'id retourné est que le champ id de la table .
OriginalL'auteur arkoak