Трабла с сессией, авторизацией, авторазлогинивание!!!

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение Dominus » 2018.06.18, 14:22

espltdmh50 писал(а):
2018.06.18, 13:53
Установил совершенно новый проект, с нуля.
https://www.yiiframework.com/doc/guide/ ... stallation
По сути там уже всё готово из коробки.
По дефолту 2 пользователя
1. логин: admin, пароль: admin
2. логин: demo, пароль: demo

P.S.
https://www.yiiframework.com/doc/guide/ ... entication
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение andku83 » 2018.06.18, 15:39

Не делайте ничего из видео, поставьте чистый проект и убедитесь что авторизация работает верно.
Если не работает то ищите проблему в своем окружении, yii тут не при чем.

espltdmh50
Сообщения: 568
Зарегистрирован: 2014.04.29, 19:14

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение espltdmh50 » 2018.06.18, 16:10

Смотрите. Изначально у нас проект инсталлируется с массивом юзеров (admin, demo), которые находятся в модели User. Если абстрагироваться от видео., и не предпринимать никаких действий, могу сказать, что авторизация работает. Но мне надо юзеров из базы. Если не делать как на видео, то где именно я должен получить юзера из базы? Метод который представлен на видео он же почти весь по докам сделан. В чем тогда подвох?

someweb
Сообщения: 542
Зарегистрирован: 2017.03.09, 10:12

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение someweb » 2018.06.18, 16:17

Сделайте по документации
https://www.yiiframework.com/doc/guide/ ... entication
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.

mader12
Сообщения: 5
Зарегистрирован: 2013.06.26, 02:25

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение mader12 » 2018.06.18, 16:41

espltdmh50 писал(а):
2018.06.18, 16:10
Смотрите. Изначально у нас проект инсталлируется с массивом юзеров (admin, demo), которые находятся в модели User. Если абстрагироваться от видео., и не предпринимать никаких действий, могу сказать, что авторизация работает. Но мне надо юзеров из базы. Если не делать как на видео, то где именно я должен получить юзера из базы? Метод который представлен на видео он же почти весь по докам сделан. В чем тогда подвох?
Вначале с массивом попробуй: авторизация работает? походи по страницам.
потом вместо массива попробуй, что то типа
$user = User::find()->where
$user->login()

кажется так было. скорее всего сессия не сохраняется. попробуй php.ini покурить. проверь работают ли сессии?

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение Dominus » 2018.06.18, 17:26

По пунктам:
1. Создаём новый проект

Код: Выделить всё

composer create-project --prefer-dist yiisoft/yii2-app-basic basic
2. Создаём БД, по умолчанию yii2basic
3. Создаём миграцию

Код: Выделить всё

php yii migrate/create create_user_table
4. Редактируем созданный файл миграции в папке migrations

Код: Выделить всё

<?php

use yii\db\Migration;

/**
 * Handles the creation of table `user`.
 */
class m180618_132642_create_user_table extends Migration
{
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $tableOptions = null;
        if ($this->db->driverName === 'mysql') {
            // http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci
            $tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
        }

        $this->createTable('{{%user}}', [
            'id' => $this->primaryKey()->comment('ID'),
            'username' => $this->string()->notNull()->unique()->comment('Username'),
            'auth_key' => $this->string(32)->notNull()->comment('Authorization Key'),
            'password_hash' => $this->string()->notNull()->comment('Hash Password'),
            'password_reset_token' => $this->string()->unique()->comment('Password Token'),
            'email_confirm_token' => $this->string()->comment('Email Confirm Token'),
            'email' => $this->string()->notNull()->unique()->comment('Email'),
            'status' => $this->smallInteger()->notNull()->defaultValue(0)->comment('Status'),
            'created_at' => $this->integer()->notNull()->comment('Created'),
            'updated_at' => $this->integer()->notNull()->comment('Updated'),
        ], $tableOptions);
    }

    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        $this->dropTable('{{%user}}');
    }
}
5. Применяем митрации

Код: Выделить всё

php yii migrate
6. Идем в gii (/web/index.php?r=gii) генерируем модель User по применённой миграции user
7. Редактируем созданую модель User следующим образом:

Код: Выделить всё

<?php

namespace app\models;

use Yii;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;
use yii\behaviors\TimestampBehavior;

/**
 * This is the model class for table "{{%user}}".
 *
 * @property int $id ID
 * @property string $username Username
 * @property string $auth_key Authorization Key
 * @property string $password_hash Hash Password
 * @property string $password_reset_token Password Token
 * @property string $email_confirm_token Email Confirm Token
 * @property string $email Email
 * @property int $status Status
 * @property int $created_at Created
 * @property int $updated_at Updated
 */
class User extends ActiveRecord implements IdentityInterface
{
    /**
     * Users Statuses
     */
    const STATUS_BLOCKED = 0;
    const STATUS_ACTIVE = 1;
    const STATUS_WAIT = 2;
    const STATUS_DELETED = 3;

    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return '{{%user}}';
    }

    /**
     * @return array
     */
    public function behaviors()
    {
        return [
            'timestamp' => [
                'class' => TimestampBehavior::class,
            ],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            [['username', 'email'], 'required'],
            [['status', 'created_at', 'updated_at'], 'integer'],
            [['username', 'password_hash', 'email'], 'string', 'max' => 255],
            [['auth_key'], 'string', 'max' => 32],
            [['username'], 'unique'],
            [['email'], 'unique'],
            [['password_reset_token'], 'unique'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'username' => 'Username',
            'auth_key' => 'Authorization Key',
            'password_hash' => 'Hash Password',
            'password_reset_token' => 'Password Token',
            'email_confirm_token' => 'Email Confirm Token',
            'email' => 'Email',
            'status' => 'Status',
            'created_at' => 'Created',
            'updated_at' => 'Updated',
        ];
    }

    /**
     * @return array
     */
    public static function getStatusesArray()
    {
        return [
            self::STATUS_BLOCKED => Yii::t('app', 'Blocked'),
            self::STATUS_ACTIVE => Yii::t('app', 'Active'),
            self::STATUS_WAIT => Yii::t('app', 'Wait'),
            self::STATUS_DELETED => Yii::t('app', 'Deleted'),
        ];
    }

    /**
     * @param int|string $id
     * @return \yii\web\IdentityInterface
     */
    public static function findIdentity($id)
    {
        $result = static::findOne(['id' => $id, 'status' => self::STATUS_ACTIVE]);
        return $result;
    }

    /**
     * @param mixed $token
     * @param null $type
     * @return \yii\web\IdentityInterface
     */
    public static function findIdentityByAccessToken($token, $type = null)
    {
        $result = static::findOne(['auth_key' => $token, 'status' => self::STATUS_ACTIVE]);
        return $result;
    }

    /**
     * @return int|string
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string
     */
    public function getAuthKey()
    {
        return $this->auth_key;
    }

    /**
     * @param string $authKey
     * @return bool
     */
    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }

    /**
     * @param string $username
     * @return mixed
     */
    public static function findByUsername($username)
    {
        return static::findOne(['username' => $username, 'status' => self::STATUS_ACTIVE]);
    }

    /**
     * @throws \yii\base\Exception
     */
    public function generateAuthKey()
    {
        $this->auth_key = Yii::$app->security->generateRandomString();
    }

    /**
     * @param string $password
     * @throws \yii\base\Exception
     */
    public function setPassword($password)
    {
        $this->password_hash = Yii::$app->security->generatePasswordHash($password);
    }

    /**
     * @throws \yii\base\Exception
     */
    public function generatePasswordResetToken()
    {
        $this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();
    }

    /**
     * removePasswordResetToken
     */
    public function removePasswordResetToken()
    {
        $this->password_reset_token = null;
    }

    /**
     * removeEmailConfirmToken
     */
    public function removeEmailConfirmToken()
    {
        $this->email_confirm_token = null;
    }

    /**
     * @param $token
     * @return User|null
     */
    public static function findByPasswordResetToken($token)
    {
        if (!static::isPasswordResetTokenValid($token)) {
            return null;
        }
        return static::findOne([
            'password_reset_token' => $token,
            'status' => self::STATUS_ACTIVE,
        ]);
    }

    /**
     * @param $email_confirm_token
     * @return User|null
     */
    public static function findByEmailConfirmToken($email_confirm_token)
    {
        return static::findOne([
            'email_confirm_token' => $email_confirm_token,
            'status' => self::STATUS_WAIT
        ]);
    }

    /**
     * @throws \yii\base\Exception
     */
    public function generateEmailConfirmToken()
    {
        $this->email_confirm_token = Yii::$app->security->generateRandomString();
    }

    /**
     * @param $password
     * @return bool
     */
    public function validatePassword($password)
    {
        return Yii::$app->security->validatePassword($password, $this->password_hash);
    }

    /**
     * @param $token
     * @return bool
     */
    public static function isPasswordResetTokenValid($token)
    {
        if (empty($token)) {
            return false;
        }
        $expire = 3600; //Yii::$app->params['users.passwordResetTokenExpire'];
        $parts = explode('_', $token);
        $timestamp = (int)end($parts);
        return $timestamp + $expire >= time();
    }
}
8. Добавим пользователя в базу с помощью консольного приложения. В папке commands создадим контроллер UserController.php

Код: Выделить всё

<?php

namespace app\commands;

use Yii;
use app\models\User;
use yii\console\Controller;
use yii\console\Exception;
use yii\helpers\Console;

/**
 * Class UserController
 * @package app\commands
 */
class UserController extends Controller
{
    /**
     * All commands
     * @inheritdoc
     */
    public function actionIndex()
    {
        echo 'yii user/create' . PHP_EOL;
        echo 'yii user/remove' . PHP_EOL;
        echo 'yii user/activate' . PHP_EOL;
        echo 'yii user/change-password' . PHP_EOL;
    }

    /**
     * Create new user
     * @inheritdoc
     */
    public function actionCreate()
    {
        $model = new User();
        $this->readValue($model, 'username');
        $this->readValue($model, 'email');
        $model->setPassword($this->prompt(self::convertEncoding(Yii::t('app', 'Password:')), [
            'required' => true,
            'pattern' => '#^.{6,255}$#i',
            'error' => self::convertEncoding(Yii::t('app', 'More than 6 symbols')),
        ]));
        $model->generateAuthKey();
        if (($select = self::convertEncoding(User::getStatusesArray())) && is_array($select)) {
            $model->status = $this->select(self::convertEncoding(Yii::t('app', 'Status:')), $select);
            $this->log($model->save());
        } else {
            $this->log();
        }
    }

    /**
     * Remove user
     * @throws Exception
     * @throws \Exception
     * @throws \Throwable
     */
    public function actionRemove()
    {
        $username = $this->prompt(self::convertEncoding(Yii::t('app', 'Username:')), ['required' => true]);
        $model = $this->findModel($username);
        if ($model->delete() !== false) {
            $this->log(true);
        } else {
            $this->log(false);
        }
    }

    /**
     * Change status user to Active
     * @throws Exception
     */
    public function actionActivate()
    {
        $username = $this->prompt(self::convertEncoding(Yii::t('app', 'Username:')), ['required' => true]);
        $model = $this->findModel($username);
        $model->status = User::STATUS_ACTIVE;
        $model->removeEmailConfirmToken();
        $this->log($model->save());
    }

    /**
     * Change password user
     * @throws Exception
     * @throws \yii\base\Exception
     */
    public function actionChangePassword()
    {
        $username = $this->prompt(self::convertEncoding(Yii::t('app', 'Username:')), ['required' => true]);
        $model = $this->findModel($username);
        $model->setPassword($this->prompt(self::convertEncoding(Yii::t('app', 'New password:')), [
            'required' => true,
            'pattern' => '#^.{6,255}$#i',
            'error' => self::convertEncoding(Yii::t('app', 'More than 6 symbols')),
        ]));
        $this->log($model->save());
    }

    /**
     * @param string $username
     * @throws \yii\console\Exception
     * @return User the loaded model
     */
    private function findModel($username)
    {
        if (!$model = User::findOne(['username' => $username])) {
            throw new Exception(
                self::convertEncoding(
                    Yii::t('app', 'User "{:Username}" not found', [':Username' => $username])
                )
            );
        }
        return $model;
    }

    /**
     * @param \yii\base\Model $model
     * @param string $attribute
     */
    private function readValue($model = null, $attribute = '')
    {
        $model->$attribute = $this->prompt(self::convertEncoding(Yii::t('app', mb_convert_case($attribute, MB_CASE_TITLE, 'UTF-8') . ':')), [
            'validator' => function ($input, &$error) use ($model, $attribute) {
                /** @var string $input */
                $model->$attribute = $input;
                /** @var \yii\base\Model $model */
                if ($model->validate([$attribute])) {
                    return true;
                } else {
                    $error = self::convertEncoding(implode(',', $model->getErrors($attribute)));
                    return false;
                }
            },
        ]);
    }

    /**
     * @param bool|int $success
     */
    private function log($success = false)
    {
        if ($success === true || $success !== 0) {
            $this->stdout(self::convertEncoding(Yii::t('app', 'Success!')), Console::FG_GREEN, Console::BOLD);
        } else {
            $this->stderr(self::convertEncoding(Yii::t('app', 'Error!')), Console::FG_RED, Console::BOLD);
        }
        echo PHP_EOL;
    }

    /**
     * @param $string
     * @param string $code
     * @param string $to
     * @return array|null|string|string[]
     */
    public static function convertEncoding($string, $code = 'cp866', $to = 'UTF-8')
    {
        if (is_array($string)) {
            $strings = [];
            foreach ($string as $key => $value) {
                $strings[$key] = mb_convert_encoding($value, $code, $to);
            }
            return $strings;
        }
        return mb_convert_encoding($string, $code, $to);
    }
}
Пробуем добавить пользователя:

Код: Выделить всё

php yii user/create

Код: Выделить всё

Username: admin
Email: admin@example.loc
Password: 123456
Status: [0,1,2,3,?]:1
Success!
Пользователь создан, пробуем залогиниться на сайте под этим пользователем
Username: admin
Password: 123456

Готово!
Последний раз редактировалось Dominus 2018.06.18, 23:27, всего редактировалось 1 раз.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

Аватара пользователя
proctoleha
Сообщения: 268
Зарегистрирован: 2016.07.10, 19:00

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение proctoleha » 2018.06.18, 21:22

Еще проще, чем у уважаемого Доминуса, на пальцах: https://youtu.be/nMWEvJw-Q80
Если, и после этого не заработает....
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

espltdmh50
Сообщения: 568
Зарегистрирован: 2014.04.29, 19:14

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение espltdmh50 » 2018.06.19, 10:49

Еще раз всем доброго дня! Проблема не исчезает((( Я попробовал и тот способ который Dominus написал, и по вашему видео. Сперва написал код ручками на случай, чтобы повторить все от и до самостоятельно, и когда понял, что не работает, далее скопировал код из исходников приложенных к видео. Если честно, откровенно говоря у меня шок. Все один в один. Ни шагу влево или вправо.

На данный момент имею скопированный из исходников код (т.е. один в один, как описал proctoleha), и в итоге не логинится вообще. Если ввожу не верный пароль, то мне выдает ошибку Incorrect username or password. Если ввожу верный пароль, то кидает на главную но не логинит.

Заметил такую особенность! У proctoleha в исходниках LoginForm в методе validatePassword есть такая строка - Yii::$app->session->setFlash('error', 'Incorrected username or password');

Если я её оставляю и ввожу не верный пароль у меня не выдает ни каких ошибок и тупо кидает на главную! Это при условии, что указана именно эта строка с применением setFlash.

А вот если указать $this->addError($attribute, 'Incorrect username or password.'); и ввести не верный пароль, тогда ошибка выпадает и на главную не кидает. Это я так понимаю проблема с сессиями какая-то... Я уже не знаю куда копать...

настройки блока session из php.ini у меня такие, но разве здесь есть что-то критичное? не понимаю((

Код: Выделить всё


[Session]
session.save_handler = files
session.save_path = "%sprogdir%/userdata/temp/"
session.use_cookies = 1
;session.cookie_secure =
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = On
session.bug_compat_warn = On
session.referer_check =
;session.entropy_length = 32
;session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
;session.upload_progress.enabled = On
;session.upload_progress.cleanup = On
;session.upload_progress.prefix = "upload_progress_"
;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
;session.upload_progress.freq =  "1%"
;session.upload_progress.min_freq = "1"


Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение Dominus » 2018.06.19, 10:55

Пробуйте отсюда поставить: https://github.com/Dominus77/yii2-basic-start
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

skynin
Сообщения: 188
Зарегистрирован: 2017.12.12, 10:09

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение skynin » 2018.06.19, 11:16

espltdmh50 писал(а):
2018.06.19, 10:49
Проблема не исчезает
потому что, не знаю зачем, коллеги предлагают какие-то эксперементы.

Еще раз.

Фреймворк Yii2, в обоих поставках, basic и advanced УЖЕ содержит модель User, с реализацией интерфейса IdentityInterface, УЖЕ содержит нужные контроллеры и вьюхи.

Для старта нужно править только конфиги. ВСЕ. никаких моделей, котроллеров, вьюх править не нужно.

В конфигах надо прописать всего-то - настройки базы данных, и сессий.
ВСЕ.

еще раз - ничего кроме конфигов править не нужно.

если для запуска базовой поставки Yii2 нужно что-то править в моделях, контроллерах, вьюхах - то значит:
1. недонастроены конфиги. или неправильно настроены. например что-то не в той секции, в имени параметра русская a вместо английской и т.п.
2. серверное или браузерное окружение настроено не стандартно

все. незачем копаться в коде фреймворка, если не выполнены 1 и 2ой пункт.
то есть если базовая поставка не работает, тесты не проходят.

сужайте сферу поиска причин проблемы, а не расширяейте правкой моделей, контроллеров, и т.д.

espltdmh50
Сообщения: 568
Зарегистрирован: 2014.04.29, 19:14

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение espltdmh50 » 2018.06.19, 12:35

skynin писал(а):
2018.06.19, 11:16
espltdmh50 писал(а):
2018.06.19, 10:49
Проблема не исчезает
потому что, не знаю зачем, коллеги предлагают какие-то эксперементы.

Еще раз.

Фреймворк Yii2, в обоих поставках, basic и advanced УЖЕ содержит модель User, с реализацией интерфейса IdentityInterface, УЖЕ содержит нужные контроллеры и вьюхи.

Для старта нужно править только конфиги. ВСЕ. никаких моделей, котроллеров, вьюх править не нужно.

В конфигах надо прописать всего-то - настройки базы данных, и сессий.
ВСЕ.

еще раз - ничего кроме конфигов править не нужно.

если для запуска базовой поставки Yii2 нужно что-то править в моделях, контроллерах, вьюхах - то значит:
1. недонастроены конфиги. или неправильно настроены. например что-то не в той секции, в имени параметра русская a вместо английской и т.п.
2. серверное или браузерное окружение настроено не стандартно

все. незачем копаться в коде фреймворка, если не выполнены 1 и 2ой пункт.
то есть если базовая поставка не работает, тесты не проходят.

сужайте сферу поиска причин проблемы, а не расширяейте правкой моделей, контроллеров, и т.д.
скажите пожалуйста, вот вы пишите, что не надо править модели, только конфиги, а как тогда юзеров из БД доставать не правя ничего?

skynin
Сообщения: 188
Зарегистрирован: 2017.12.12, 10:09

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение skynin » 2018.06.19, 13:15

espltdmh50 писал(а):
2018.06.19, 12:35
а как тогда юзеров из БД доставать не правя ничего?
вы вначале запустите чистый проект, а потом уже будете доставать из базы.

В базовой поставке есть модели форм, SignupForm, LoginForm - регистарции и логина. там и достается юзер.

То есть, еще раз - у вас не работает базовый функционал. если не работает базовый функционал - то какой смысл что-то дописывать свое?
все равно ж - сайт НЕ заработает.

а для того чтобы заработал базовый функционал авторизации - в поставке уже все есть.
Неврубающийся не может опознать врубающегося.

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение Dominus » 2018.06.19, 13:25

skynin писал(а):
2018.06.19, 13:15
То есть, еще раз - у вас не работает базовый функционал. если не работает базовый функционал - то какой смысл что-то дописывать свое?
все равно ж - сайт НЕ заработает.
Как раз базовый у него работает.
espltdmh50 писал(а):
2018.06.18, 16:10
Смотрите. Изначально у нас проект инсталлируется с массивом юзеров (admin, demo), которые находятся в модели User. Если абстрагироваться от видео., и не предпринимать никаких действий, могу сказать, что авторизация работает. Но мне надо юзеров из базы. Если не делать как на видео, то где именно я должен получить юзера из базы? Метод который представлен на видео он же почти весь по докам сделан. В чем тогда подвох?
У него не получается всё это дело перевести на базу данных)
Dominus писал(а):
2018.06.19, 10:55
Пробуйте отсюда поставить: https://github.com/Dominus77/yii2-basic-start
Тут всё готово.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

espltdmh50
Сообщения: 568
Зарегистрирован: 2014.04.29, 19:14

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение espltdmh50 » 2018.06.19, 13:31

Сделал на yii1 все тоже самое. Понятно, что несколько иной синтаксис ну да хрен с ним. Ведь все работает и юзеры из бд достаются и сессия держится, т.е. приложение не теряет пользователя. Rbac установил опять же в рамках yii1. И ведь нет ни какой проблемы! Да че ж за хрень та такая. Ведь чистый проект, даже блин с исходниками( ппц, слов нет

skynin
Сообщения: 188
Зарегистрирован: 2017.12.12, 10:09

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение skynin » 2018.06.19, 13:38

Dominus писал(а):
2018.06.19, 13:25
Как раз базовый у него работает.
---
У него не получается всё это дело перевести на базу данных)
вот этого и не пойму. что значит - перевести это дело в базу данных?

в базовой поставке есть миграция, которая создаст таблицу пользователей.

то есть я не понял вашего поста
с php yii migrate/create create_user_table

и дальнейшим кодом.

хотя, может это в basic этого кода нет..., давно не использовал. в advanced так точно есть :)
весь код что вы привели, уже есть.

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

потому что 1ое и 2ое все равно очень сложно пересказать в форуме.

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

Аватара пользователя
Dominus
Сообщения: 799
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение Dominus » 2018.06.19, 13:42

да, в basic уже нет.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!

skynin
Сообщения: 188
Зарегистрирован: 2017.12.12, 10:09

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение skynin » 2018.06.19, 13:44

espltdmh50 писал(а):
2018.06.19, 13:31
Ведь чистый проект,
значит НЕ чистый.
чистый проект в типичном окружении работает. из коробки. только конфиги. потому что разработчики конечно не могут знать параметры подключения к вашей БД

значит у вас - не чистый, раз не работает :)

логично же что не работать может
- из-за окружения - веб-сервер, настройки
- из-за ВАШЕГО кода. Уберите его. Поставьте чистый Yii2 и настройте (только настройте, не добавляйте код который НЕ работает)
Неврубающийся не может опознать врубающегося.

skynin
Сообщения: 188
Зарегистрирован: 2017.12.12, 10:09

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение skynin » 2018.06.19, 13:44

Dominus писал(а):
2018.06.19, 13:42
да, в basic уже нет.
а-а-а, вона как. тогда понятно, чего мне непонятно :)

ну тогда в advanced. либо просто взять версию Yii2 где он еще есть
Неврубающийся не может опознать врубающегося.

espltdmh50
Сообщения: 568
Зарегистрирован: 2014.04.29, 19:14

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение espltdmh50 » 2018.06.19, 14:37

Ребяяяяяяят. Наконец-то заработало! Посмотрел внимательно все методы моделей в template advanced и сделал тоже самое но в рамках шаблона basic, и ведь сразу все заработало. Т.е. получается что в basic - ке методы не отрабатывали так как нужно, а с помощью кода из advanced все заработало. Удивительно. Но теперь это не важно. Наконец-то работает. Ураа)) Спасибо всем за отклики и помощь)))

Аватара пользователя
proctoleha
Сообщения: 268
Зарегистрирован: 2016.07.10, 19:00

Re: Трабла с сессией, авторизацией, авторазлогинивание!!!

Сообщение proctoleha » 2018.06.20, 08:16

espltdmh50 писал(а):
2018.06.19, 10:49
Если честно, откровенно говоря у меня шок. Все один в один. Ни шагу влево или вправо.
Вообще то разница есть - у меня Линукс Минт, у вас? наверное, Windows. На боевом сервере тоже, кстати, будет Линукс. Это вам инф-ция к размышлению.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

Ответить