butteff
@butteff
Раз в тысячу лет заправляю свитер в носки

Как сделать авторизацию в yii2 через БД?

В стандартной модели Users у basic шаблона есть массив:

private static $users = [
        '100' => [
            'id' => '100',
            'username' => 'admin',
            'password' => 'admin',
            'authKey' => 'test100key',
            'accessToken' => '100-token',
        ],
        '101' => [
            'id' => '101',
            'username' => 'demo',
            'password' => 'demo',
            'authKey' => 'test101key',
            'accessToken' => '101-token',
        ],
    ];


Регистрация у меня сложная в несколько этапов, поэтому я писавл свои модели\контроллеры для этого, но авторизацию хочу оставить стандартную, встроившись в функционал.
У меня уже есть база данных user_login со столбцами id,mail, password. И еще ряд других таблиц, которые я получаю при регистрации, но они тут не нужны.

И тут у меня встает ряд вопросов:

1. Зачем вообще считывать id? Он то у меня есть, но для чего он служит?
2. Для чего нужны 'authKey' и 'accessToken' ? Мне стоит добавить эти столбцы в БД? И как их наполнять, рандомными значениями?
3. Где можно почитать про создание авторизации в yii2? В доках не нахожу, там только RBAC и ACF фильтры
  • Вопрос задан
  • 11500 просмотров
Решения вопроса 1
butteff
@butteff Автор вопроса
Раз в тысячу лет заправляю свитер в носки
В общем воткнулся костылями в существующий код.

в методе findIdentity($id) по этому id ищу запись о юзере, формирую массив, как стандартный, и переопределяю его значениями этого массива. Этот метод проверяет залогиненого юзера.

И еще для валидации то же самое сделал в findByUsername($username)
Ну и в методе validatePassword($password) пришлось добавить md5 генерацию пароля, вот и все.

Если нужен кому файл /public_html/models/Users.php с этими методами, пишите - пришлю. Почта в профиле.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
kawabanga
@kawabanga
У вас есть два очень простых пути
1) установить advanced шаблон, там user - стандартный функционал, который работает с бд, только необходимо настройки бд ввести и запустить миграции
2) https://github.com/dektrium/yii2-user установите вот это расширение.
Это будет проще. чем делать вам велосипед.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы