2015-08-24 9 views
5

Nel tentativo di creare un api di accesso e hanno seguito il link https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authentication.mdArgomento 1 passata a Yii web User :: login() deve implementare l'interfaccia Yii web IdentityInterfac, null dato

quanto sopra url dice:

per accedere un utente, è possibile utilizzare il seguente codice:

// find a user identity with the specified username. 
// note that you may want to check the password if needed 
$identity = User::findOne(['username' => $username]); 

// logs in the user 
Yii::$app->user->login($identity); 

in cui deve essere aggiunto questa linea nell'azione di controllo o la classe che implementa IdentityInterface.

Sulla aggiungendo la linea di cui sopra in azione di controllo, ma ottengo l'errore dicendo Argument 1 passed to yii\web\User::login() must implement interface yii\web\IdentityInterface, null given, called in C:\wamp\www\basic\controllers\MyController.php on line 202 e definiti dove come la classe che ho amy attuazione interfaccia identità è reale un modello chiamato MyUser (app \ modelli \ myuser).

Perché dice che yii\web\User::login() deve implementare l'interfaccia di identità?

E se deve essere aggiunto in classe Myuser come devono essere passati i parametri inviati alla funzione di login?

Qualcuno può aiutarmi in questo?

risposta

2

Il modello User deve implementare IdentityInterface

class User extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface{ 
    ... 
} 
+0

la sua è .. Ho infatti aggiunti i implemets per modellare MyUser. Si prega di notare che non si sta usando la modalità utente yii2 predefinita. Sto usando il mio modello personalizzato myUser activeRecord. – DpGp

+0

implementare IdentityInterface, è obbligatorio. –

0
Yii::$app->getUser()->login($user); 
var_dump($user); 

Provatelo, è possibile ottenere la risposta.

Ho incontrato lo stesso problema con te e risolto. var_dump($user), è possibile conoscere

+0

Aggiungi una spiegazione con la risposta per come questa risposta aiuta l'OP a risolvere il problema attuale –

0

è possibile implementare più di un'interfaccia,

User extends \yii\db\ActiveRecord implements IdentityInterface, OtherInterface 
{ 
... 
}