2015-09-21 10 views
0

Я новичок в yii2, прямо сейчас я работаю с пользовательским логином, я сделал весь код для входа в систему, но когда я иду на домашней странице с помощью действия индекса, я не получил никакой сессии там, здесь мой кодYii2 пользовательский логин не работает

public function actionIndex() 
    { 
     $session = Yii::$app->session; 
    if ($session->isActive) { 
      echo 'sdsd'; die; 
     } 
     return $this->render('index'); 
    } 

    public function actionLogin() 
    { 
     if (!\Yii::$app->user->isGuest) { 
      return $this->goHome(); 
     } 
     $model = new User(); 
     //if ($model->load(Yii::$app->request->post()) && $model->login()) { 
     if ($model->load(Yii::$app->request->post()) && $model->validate()) { 
      $userName = $_POST['User']['UserName']; 
      $password = $_POST['User']['Password']; 
      $condition = "UserName = '".$userName."' AND Password = '".md5($password)."' AND Status = '1' AND UserType = '1' "; 
      $loginData = User::find()->where($condition)->all(); 
      if(count($loginData)>0) { 
       $username = $loginData[0]->UserName; 
       $userID = $loginData[0]->UserID; 
       $session = Yii::$app->session; 
       $session->set('userName',$username); 
       $session->set('userID',$userID); 
       $this->redirect('index'); 
      } else { 
       Yii::$app->session->setFlash('error', 'Username or password is incorrect'); 
      } 
     } 
     return $this->render('login', [ 
      'model' => $model, 
     ]); 
    } 

Даже после того, как войти в это до сих пор считают меня как пользователь guaest, Yii::$app->user->isGuest какие изменения мне нужно делать?

+1

Возможный дубликат [Yii Framework 2.0 Login with User Database] (http://stackoverflow.com/questions/25790543/yii-framework-2-0-login-with-user-database) – topher

+1

Несколько вещей. 1) [Не используйте MD5 для паролей] (http://security.stackexchange.com/a/52463/52211). 2) Ваш код уязвим для SQL-инъекций, так как вы передаете пользовательский ввод непосредственно в свое состояние. 3) http://stackoverflow.com/a/25828984/428543 – topher

ответ

1

Вам не войти в систему пользователя в Yii App

Вам не нужно установить сеанс, который необходимо присвоить соответствующее значение этой функции

return \Yii::$app->getUser()->login($yourUser, $yourRememberMe ? $this->module->rememberFor : 0); 

увидеть эту doc for user и это для login

+0

Я знаю, но у меня есть другой метод пароля, поэтому я не могу использовать вход по умолчанию yii2 –

+1

. Вы должны использовать \ Yii :: $ app-> getUser() -> логин (..) или эквивалент. Установка сеанса недействительным – scaisEdge

Смежные вопросы