2015-09-21 78 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使用用戶數據庫登錄]的可能的重複(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的應用

你不需要設置會話必須正確值分配給該功能

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

看到這個doc for user這對於login

+0

我知道,但我有不同的密碼方法,所以我不能使用默認登錄yii2 –

+1

但是,您必須使用\ Yii :: $ app-> getUser () - >登錄(..)或等效。將會話設置爲無效 – scaisEdge