Я пытаюсь настроить Yii2 как традиционную систему пользователя/администратора. Frontend будет /user, а backend будет /admin и будет использовать соответствующую таблицу в базе данных (user и admin). Я еще не переименовал интерфейс и бэкэнд в пользователя и администратора.
Использование миграции сгенерировало таблицу «пользователь» со всеми ее полями. Я зарегистрировался, чтобы создать нового пользователя, все работает отлично. Затем я скопировал таблицу «user», назвал ее «admin» и изменил имя пользователя на «admin». Я могу изменить пароль или сократить его, зарегистрировать нового пользователя-администратора, а затем удалить регистрацию из бэкэнда позже. Таблица администратора в самой БД не является проблемой, так как я не захожу так далеко, когда дохожу до ошибки.
Я настроил и использовал Yii2 advanced на стороне пользователя (пользователя). Конечно, у вас есть Yii::$app->user, и он отлично работает во внешнем интерфейсе. Я могу войти, он использует таблицу «пользователи». Фронтенд работает отлично...
Теперь на бэкэнде (admin) мне нужно использовать таблицу «admin». Я знаю, что вы указываете таблицу для использования в модели. Я скопировал /common/models/User.php и получил /common/models/Admin.php и обновил функцию, чтобы вместо этого использовать таблицу «admin».
Я также скопировал /vendor/yiisoft/yii2/web/User.php и поместил его в /common/models/web/Admin.php (и переименовал имя класса с User на Admin)
Затем я отредактировал файл /backend/config/main.php, чтобы отразить изменения для администратора (класс и класс идентификации).
/backend/config/main.php
'components' => [
'admin' => [
'identityClass' => 'common\models\Admin',
'class' => 'common\models\web\Admin',
'enableAutoLogin' => true,
],
],
/common/models/web/Admin.php
class Admin extends Component { ... }
/common/models/Admin.php
class Admin extends ActiveRecord implements IdentityInterface {
public static function tableName()
{
return '{{%admin}}';
}
}
Ошибка: User::identityClass must be set.
‹-- Как видите, он каким-то образом все еще ссылается на модель пользователя...
Кроме того, когда я получу эту настройку, буду ли я использовать Yii::$app->admin вместо Yii::$app->user ? Как для проверки, вошли ли они в систему, используя isGuest.
Я хочу быть уверен, что пользователь не может войти в интерфейс, а затем вручную перейти в серверную часть и войти в систему!