防止表格重新提交Yii 2

I have seen different implementation about this but in my particular code $this->refresh(); doesn't work or maybe I just do not know where to put it in my case. Can someone help me.

Here is the action in my controller.

public function actionIndex()
    {
      // if (!Yii::$app->user->isGuest) {
      //         return $this->goHome();
      //     }
      $model = new LoginForm();

          $model = new LoginForm();
          if (($model->load(Yii::$app->request->post()) && $model->login()) || (!Yii::$app->user->isGuest)) {
              $this->layout = 'userlayout';
            //  $this->refresh();
            return $this->render('mainpage', [
              'model' => $model,
            //return $this->goBack();
            ]);
              //$this->refresh();
        }
          return $this->render('index', [
            'model' => $model,
          ]);
    }

EDIT: I have edited my code based on the recommendation below, this is the code of the full ordeal.

  public function actionIndex()
    {
      if (!Yii::$app->user->isGuest) {
          //return $this->goHome();
            $this->redirect('site/main',302);
          // $this->layout = 'userlayout';
          // return $this->render('mainpage');
          }
    //  $model = new LoginForm();

          $model = new LoginForm();
          if ($model->load(Yii::$app->request->post()) && $model->login()) {
            //  $this->layout = 'userlayout';
          //return $this->goBack();
            $this->redirect('site/main',302);//\Yii::$app->urlManager->createUrl("test/show")         $this->redirect('/user/index',302);
          //return $this->render('mainpage');
       }
        //   if (($model->load(Yii::$app->request->post()) && $model->login()) || (!Yii::$app->user->isGuest)) {
        //       $this->layout = 'userlayout';
        //     //  $this->refresh();
        //     return $this->render('mainpage', [
        //       'model' => $model,
        //     //return $this->goBack();
        //     ]);
        //       //$this->refresh();
        // }
          return $this->render('index', [
            'model' => $model,
          ]);

    }

The logic I used for login in my Yii2 basic app is this:

    public function actionLogin()
    {
        if (!Yii::$app->user->isGuest) {
            return $this->goHome();
        }

        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        }
        return $this->render('login', [
                    'model' => $model,
        ]);
    }

And then in the LoginForm :

public function validatePassword($attribute, $params)
    {
        if (!$this->hasErrors()) {
            $user = $this->getUser();
            if (!$user || !$user->validatePassword($this->password)) {
                $this->addError($attribute, 'Incorrect username or password.');
            }
        }
    }

    public function login()
    {
        if ($this->validate()) {
            return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
        }
        return false;
    }

    public function getUser()
    {
        if ($this->_user === false) {
            $this->_user = User::findByEmail($this->email);
        }

        return $this->_user;
    }

The only thing that is different is that I use User::findByEmail and not the default one where the information is not selected from db but instead hardcoded in the model.