Почему laravel базовых пользователей могут войти в админ-панель рюкзака? - PullRequest
0 голосов
/ 04 февраля 2020

Я только что обнаружил рюкзак, прочитал базовую документацию, без проблем установил последнюю версию (laravel 6 в приусадебном окружении). Все отлично работает, добавил несколько модулей, немного поиграл с Cruds и др. c. Тем не менее, есть одна вещь, которую я не понимаю: почему простые (базовые laravel) пользователи могут войти в панель администратора? Мне действительно не нравится идея иметь столбец is_admin в таблице пользователей, но я предпочитаю иметь совершенно отдельную таблицу для администраторов. При чтении документов я думал, что это поведение по умолчанию в рюкзаке v4 +, но я явно не понял:)

Что меня смущает еще больше, так это защита рюкзака. Почему он вообще существует, если он не мешает пользователям получить доступ к панели администратора рюкзака? почему бы не использовать веб-охранник, если охранник рюкзака больше ничего не делает?

Я был бы очень благодарен, если бы кто-нибудь мог объяснить мне концепцию этого и то, что я пропустил! Ссылка на способ полностью отделить рюкзак и обычную laravel аутентификацию пользователей тоже подойдет:)

Cheers,

1 Ответ

3 голосов
/ 04 февраля 2020

лучший способ для администраторов и пользователей отделиться от проекта к проекту. Плюс, это вопрос мнения. По умолчанию в Backpack мы пытались удовлетворить 90% сценариев использования, и большинство проектов либо имеют только администраторов, либо хранят пользователей в одной таблице с администраторами для удобства. Но именно поэтому мы используем другую защиту, чтобы легко изменить поведение по умолчанию.

Единственное, что общего между аутентификацией Backpack и Laravel - это модель User. Вы заметите App\Models\BackpackUser extends App\User. Если вы хотите использовать другую таблицу для хранения ваших администраторов, это завершит разделение администраторов и пользователей:

Решение 1

  • создайте миграцию и модель для ваших администраторов; Вы можете начать с Laravel ;
  • сделать App\Models\BackpackUser extend App\Models\Admin вместо User;

Решение 2

Используйте собственную модель вместо BackpackUser. Если вам нужно сохранить функциональность сброса пароля, вы также должны использовать черты и методы в BackpackUser на новой модели администратора.

Надеюсь, это поможет.

-

PS. Backpack начинался с использования аутентификации Laravel, и с годами стали использоваться отдельные представления, контроллеры, охранники и c - чтобы разработчикам было проще настраивать его под свои различные потребности. Очень немногие люди до сих пор жаловались на использование таблицы users для хранения администраторов, поэтому мы сохранили это таким образом. Если вы думаете, что по умолчанию должна представлять собой отдельную таблицу admins, я предлагаю вам открыть ветку в нашем Github и указать причины для команды и сообщества. Если за изменением стоит достаточно людей, оно обычно реализуется.

...