2015-08-24 13 views
5

Im próbuje utworzyć API logowania i podążały link https://github.com/yiisoft/yii2/blob/master/docs/guide/security-authentication.mdArgument 1 przekazywane do Yii Web użytkownik :: login() musi implementować interfejs Yii Web IdentityInterfac, null podano

wyżej url mówi:

Aby zalogować użytkownika, można użyć następującego kodu:

// 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); 

gdzie powinna być ta linia dodana w działaniu sterownika lub klasy, która implementuje IdentityInterface.

Po dodaniu powyższej linii w akcji kontrolera, ale ja się błąd mówiąc 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 i zdefiniowane gdzie jako klasa, że ​​Amy wdrożenie interfejsu tożsamość jest rzeczywisty model nazywa myuser (app \ Modele \ myuser).

Dlaczego jest napisane, że yii\web\User::login() musi implementować interfejs tożsamości?

A jeśli ma być dodana w klasie Myuser, w jaki sposób są przesyłane parametry do funkcji logowania?

Czy ktoś może mi w tym pomóc?

Odpowiedz

2

Twój model User musi wdrożyć IdentityInterface

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

jej jest .. Mam rzeczywiście dodał implemets modelu myuser. Pls note nie używa domyślnego trybu użytkownika yii2. Korzystam z mojego własnego modelu myUser activeRecord. – DpGp

+0

implement IdentityInterface, jest to obowiązkowe. –

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

Spróbuj, można uzyskać odpowiedź.

Spotkałem ten sam problem z tobą i rozwiązano. var_dump($user) można poznać

+0

Dodaj wyjaśnienie w odpowiedzi na pytanie, w jaki sposób ta odpowiedź pomaga OP w naprawianiu bieżącego problemu –

0

można zaimplementować więcej niż jeden interfejs,

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