Аутентификация для бекенда

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
t3rmit
Сообщения: 23
Зарегистрирован: 2014.04.29, 10:46

Аутентификация для бекенда

Сообщение t3rmit »

Есть требование использовать 2 разных таблицы пользователей в БД для безопастности.
Есть таблица user & admin_user соответственно для фронтенда и бекенда.
На бекенде добавление пользотелей-админов будет не через почту, а другим админом через форму в бекенде.
Для бекенда миграция:

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

$this->createTable('{{%admin_user}}', [
            'id' => Schema::TYPE_PK,
            'username' => Schema::TYPE_STRING . ' NOT NULL',
            // 'auth_key' => Schema::TYPE_STRING . '(32) NOT NULL',
            'password_hash' => Schema::TYPE_STRING . ' NOT NULL',
            // 'password_reset_token' => Schema::TYPE_STRING,
            'email' => Schema::TYPE_STRING . ' NOT NULL',
            'role' => Schema::TYPE_SMALLINT . ' NOT NULL DEFAULT 10',

            'status' => Schema::TYPE_SMALLINT . ' NOT NULL DEFAULT 10',
            'created_at' => Schema::TYPE_INTEGER . ' NOT NULL',
            'updated_at' => Schema::TYPE_INTEGER . ' NOT NULL',
        ], $tableOptions);
Выбросил поля 'auth_key' и 'password_reset_token'. Я так понимаю они нужны для регистрации через почту. Мне ни к чему.
Класс Admin (наследник ActiveRecord) должен обязательно имплеменитить интерфейс IdentityInterface, т.к. на него завязан

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

\Yii::$app->user->login()
Но там много лишних не нужных мне методов, например

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

public function getAuthKey()
    {
        return $this->authKey;
    }

    public function validateAuthKey($authKey)
    {
        return $this->authKey === $authKey;
    }
И как реализовывать эти методы? На все нужно заглушки ставить с ексепшинами? Как-то не гибко вообще...
Может есть какой-то более правильный метод для аутентификации?
dmeroff
Сообщения: 101
Зарегистрирован: 2012.06.05, 14:32
Откуда: Петрозаводск
Контактная информация:

Re: Аутентификация для бекенда

Сообщение dmeroff »

auth_key нужен для авторизации, его вы выкинули совершенно зря.
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

Re: Аутентификация для бекенда

Сообщение german.igortcev »

Прочитай в оффф документации, там описано подробно зачем наследовать IdentityInterface и какие методы обязательны.
t3rmit
Сообщения: 23
Зарегистрирован: 2014.04.29, 10:46

Re: Аутентификация для бекенда

Сообщение t3rmit »

german.igortcev писал(а):Прочитай в оффф документации, там описано подробно зачем наследовать IdentityInterface и какие методы обязательны.
Методы обязательны все, т.к. это интерфейс. Вообще, в документации всё скудненько описано по IdentityInterface.
dmeroff писал(а):auth_key нужен для авторизации, его вы выкинули совершенно зря.
Может и зря, но видать до момента, когда он понадобится я еще не дошел. Просто в документации написано:
getAuthKey() public method
Returns a key that can be used to check the validity of a given identity ID.
The key should be unique for each individual user, and should be persistent so that it can be used to check the validity of the user identity.
The space of such keys should be big enough to defeat potential identity attacks.
This is required if yii\web\User::$enableAutoLogin is enabled.
validateAuthKey() public method
Validates the given auth key.
This is required if yii\web\User::$enableAutoLogin is enabled.
Последние предложения говорят, что auth_key нужен только, когда будет включен enableAutoLogin, но я не собирался его включать...

Правильно ли я понимаю, что де-факто нужно использовать IdentityInterface, чтобы пользоваться уже встроеными прелестями фреймворка и не изобретать велосипед? Может я что-то неправильно понял, но в текущий момент мне показалось, что в IdentityInterface не всегда все методы нужны. Может для случая, когда пользователи не регистрируются через емейл, нужно что-то другое?
Аватара пользователя
ifelse
Сообщения: 227
Зарегистрирован: 2013.02.05, 13:05

Re: Аутентификация для бекенда

Сообщение ifelse »

Под капотом ваш класс проверяется - реализовали ли вы интерфейс или нет. Даже если вы считате, что вам что-то не нужно придется реализовать пустые методы
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

Re: Аутентификация для бекенда

Сообщение german.igortcev »

ifelse писал(а):Под капотом ваш класс проверяется - реализовали ли вы интерфейс или нет. Даже если вы считате, что вам что-то не нужно придется реализовать пустые методы
Да, дело говорит.
У Вас даже будут ошибки сыпаться если не объявите метод
3ton
Сообщения: 61
Зарегистрирован: 2009.06.30, 16:35

Re: Аутентификация для бекенда

Сообщение 3ton »

dmeroff писал(а):auth_key нужен для авторизации, его вы выкинули совершенно зря.
не болтайте ерундой, работает без него довольно хорошо все, это нужно если будете по кукам автологин юзать, но не все используют этот функционал
Ответить