2016-11-14 4 views
1

Я пытаюсь сделать: когда пользователь уполномочен Перейти на главную страницу , когда пользователь не авторизован идти на странице входа , но теперь, когда я ставлю (правильная) электронная почта пользователя и пароль, который всегда освежит логин и не входит в систему.авторизация не работает yii2

пользователя (ActiveRecord)

class User extends ActiveRecord implements IdentityInterface 
{ 
    public function setPassword($user_password) 
    { 
     $this->password = sha1($user_password); 
    } 
    public function validatePassword($user_password) 
    { 
     return $this->user_password === sha1($user_password); 
    } 
    public static function findIdentity($id) 
    { 
     return self::findOne($id); 
    } 
    public static function findIdentityByAccessToken($token, $type = null) 
    { 

    } 
    public function getId() 
    { 
     return $this->user_id; 
    } 
    public function getAuthKey() 
    { 

    } 
    public function validateAuthKey($authKey) 
    { 

    } 
} 

Войти Модель:

class Login extends Model 
{ 
    public $user_email; 
    public $user_password; 
    public function rules() 
    { 
     return [ 
      [['user_email', 'user_password'],'required'], 
      ['user_email','email'], 
      ['user_password','validatePassword'] 
     ]; 
    } 
    public function validatePassword($attribute,$params) 
    { 
     if(!$this->hasErrors()) 
     { 
      $user = $this->getUser(); 
      if(!$user || !$user->validatePassword($this->user_password)) 
      { 
       $this->addError($attribute, 'Пароль или пользователь введенны не верно'); 
      } 
     } 
    } 
    public function getUser() 
    { 
     return User::findOne(['user_email'=>$this->user_email]); 
    } 
} 

?> 

SiteController (только Войти функции)

public function actionLogin() 
    { 

     if(!Yii::$app->user->isGuest) 
     { 
      return $this->goHome(); 
     } 
     else { 
      $login_model = new Login(); 
      return $this->render('login',['login_model'=>$login_model]); 
     } 
    } 
+0

Вы можете сказать это обо всех проблемах в stackoverflow, это не ответ. – givemeanswer

+0

Нет, вы правы, его назвали комментарием. 'givemeanswer' yea sure – RiggsFolly

+0

Это не работает, потому что вы не называете его нигде. Noanswer, Давайте снова проверим ваш учебник. –

ответ

0

Недостаточно ввести имя пользователя и пароль, вы также должны выполнить логин

public function actionLogin() 
{ 

    if(!Yii::$app->user->isGuest) 
    { 
     return $this->goHome(); 
    } 
    if ($model->load(Yii::$app->getRequest()->post())) { 
     // you should perform login 
     \Yii::$app->getUser()->login($model->user, $this->rememberMe ? $model->module->rememberFor : 0); 
     return $this->goBack(); 
    } 

    else { 
     $login_model = new Login(); 
     return $this->render('login',['login_model'=>$login_model]); 
    } 
} 
Смежные вопросы