Yii некоторые пользователи не могут войти - PullRequest
0 голосов
/ 03 октября 2018

Итак, мне поручили исправить одно из наших старых веб-приложений, в котором используется Yii, и мы больше не работаем с dev.

Я не разработчик Yii, понятия не имеючто я делаю

Но в любом случае, я попытался и потерпел неудачу ...

Проблема заключается в следующем:

Большинство наших старых пользователей могут войти,но новые не могут.Что происходит, когда они пытаются войти в систему, они сначала входят в систему, а затем (я думаю) , когда они должны быть перенаправлены на домашнюю страницу с помощью return $this->goHome();, это перенаправляется для входа в систему.Поэтому после этого страница входа отправляет их обратно на домашнюю страницу.(так как они вошли в систему на этом этапе) После 10 на этой странице отображается ошибка слишком много перенаправлений.

Что я пробовал:

Я изменил goBack на goHome, потому что я пыталсяможет быть, он не знает, куда отправить пользователя, вот почему это происходит.Не повезло ....

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

        $this->layout = "@app/views/layouts/loginscreen.php";

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

Я отредактировал .htaccess, но это не сработало, и это не объяснило бы, почему пожилые пользователи могут войти в систему.

Что у меня есть как информация:

  • Пожилые пользователи могут войти.(не знаю, как далеко назад)
  • Приложение было скопировано на другой сервер, но мы все еще используем старый.
  • После попытки войти в систему с новым пользователем, я не могу загрузитьна странице, если только я не удаляю файлы cookie.
  • Файлы cookie настроены так, что они никогда не исчезают.

веб-настройки, относящиеся к пользователю:

'user' => [
    'identityClass' => 'app\models\User',
    'loginUrl' => ['admin/user/login'],
    'on ' . \yii\web\User::EVENT_AFTER_LOGIN => ['app\events\UserLoginEvents', 'AfterLogin'],
    'enableAutoLogin' => true,
],

ПослеЛогин может быть пользовательским:

namespace app\events;

use Yii;

class UserLoginEvents {

    public static function AfterLogin($event) {

        $session = Yii::$app->session;
        $session->updateUser(Yii::$app->getUser()->id);

        if (!trim($event->identity->getAuthKey())) {
            $event->identity->generateAuthKey();
            $event->identity->save();
            Yii::$app->getUser()->switchIdentity ( $event->identity, $event->duration );
        }

    }

}

Спасибо за вашу помощь заранее.Нам действительно не с кем идти, так что я в крайнем случае .. И в этом тоже не очень хорошая вещь.

У меня есть доступ по ssh к серверу phpmyadmin accessк БД, и у меня есть код, но не Git только с FTP.

1 Ответ

0 голосов
/ 05 октября 2018

Я думаю, что проблема в возврате

return $this->goBack();

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

попробуйте с другим кодом:

return $this->redirect(['/site/index']);

Кстати, этовсегда лучше использовать приведенный выше синтаксис, потому что какой-то сервер, особенно новый, не может иметь историю перенаправления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...