🙅‍♂️🙆‍♀️ VUE 3 Ролевая модель, ограничения доступов

Поделиться
HTML-код
  • Опубликовано: 8 сен 2024
  • Видео о том, как организовать ролевую модель в веб приложении, в частности на фронте. Как настроить доступ по ролям или возможностям. Как прикрутить это красиво и удобно в spa приложения на VUE 3
    ⚡ Ссылки ⚡
    Мой канал в телеграмме - t.me/developer...
    Видео про supabase - • 🔍 VUE 3 + бесплатный х...
    Github - gitlab.com/Sti...

Комментарии • 78

  • @Screxyy
    @Screxyy 11 месяцев назад +3

    Посмотрев это видео, понял сколько мне еще учиться xDD

  • @K1appy
    @K1appy Год назад +1

    офигенный контент, пожалуйста не забрасывай канал, очень полезные видео, а не просто пересказ доков или объяснения как через v-for список вывести !

    • @dev-workshop
      @dev-workshop  Год назад

      Привет! Спасибо за отклик! Я постараюсь, но со временем очень большая напряженка

  • @ESTechnonet
    @ESTechnonet Месяц назад

    Самый имбовый способ разделить роли - разные url для разных ролей. Все остальное (в том числе то, о чем говорит автор) для очень простых приложух.

    • @dev-workshop
      @dev-workshop  Месяц назад

      Ну вот здесь я бы поспорил)
      Возьмем TeamCity, явно не очень простое приложение или гитлаб
      В зависимости от разных доступов на одной странице в интерфейсе, даже в одной менюшке есть разный набор кнопок

    • @ESTechnonet
      @ESTechnonet Месяц назад

      @@dev-workshop я тут не прав в том смысле что слово "простые" тут не подходит. Ща попробую сформулировать точнее: если у вас интерфейс админа и юзера отличается целиком а не только лишь парой кнопок и менюшкой, то имеет смысл опереться о url ролевую модель. Это не подойдет лишь в случае если религия не позволяет наблюдать "/userRole/dashboard" в адресной строке. В остальном композиция компонент позволяет прекрасно переиспользовать код и не париться по поводу прав. Я не говорю что та модель которую вы рассмотрели не жизнеспособна, нет, она прекрасно работает но только в ряде случаев.

    • @dev-workshop
      @dev-workshop  Месяц назад +1

      @@ESTechnonet Дополнив текущую реализацию можно сделать ограничения и по урлам, такми образом будет комбинированная система
      для накста очень удобно через pageMeta ограничивать доступы и мидлваркой их отлавливать

  • @jonyonee
    @jonyonee 2 года назад +1

    Блин классно, в каком то периоде это точно мне понадобится. Спасибо большое.

    • @dev-workshop
      @dev-workshop  2 года назад

      Пожалуйста :)
      Но это не единственное решение и не сильвер булет, перед применением посмотри, возможно другие решение будут более подходящие :)

  • @mikhailwalle9556
    @mikhailwalle9556 Год назад +1

    Ждем новых видео. У тебя очень годный материал!

    • @dev-workshop
      @dev-workshop  Год назад +1

      Спасибо! Надеюсь, весной снова смогу пилить видосы :)

  • @kalyszhek5296
    @kalyszhek5296 7 месяцев назад +1

    Ты мне открыл глаза. 😳🥹
    Но я нифига не понял, но к этому иду. Я начинающий. 😅
    Пойду посмотрю все видео.
    Надеюсь есть где пишешь все это..

  • @grigoriy-iceicebaby2985
    @grigoriy-iceicebaby2985 Год назад

    Классный контент, помогает, продолжение этой части с тайпскриптом нужно!

  • @user-cw3pt9ev8b
    @user-cw3pt9ev8b Год назад +1

    Спасибо! Очень круто!!!!

    • @dev-workshop
      @dev-workshop  Год назад

      Рад, что понравилось)

  • @Dikodance
    @Dikodance 8 месяцев назад

    Эх, где это видео было раньше. Столько времени убил чтоб самому допереть до этого)) спасибо. Ещё удобно добавить группы скоупов, особенно если из много и юзеры сами будут рулить доступами

    • @dev-workshop
      @dev-workshop  8 месяцев назад +1

      группы скоупов это уже роли)
      но мы тоже делали группы, но только чтобы отобразить группой в интерфейсе, а у пользователя связи были только со скоупами)

    • @Dikodance
      @Dikodance 8 месяцев назад

      @@dev-workshop думаю все зависит от сценария. Я пилю щас crud saas и там например у каждого аккаунта рожаются роли и дефолтные пермишены. и если взять скажем роль админа который имеет доступ везде то там без групп получится что надо назначать простыню доступов на пару экранов) а если таких ролей будет несколько то все резко станет сложно) а так я завел группы и если юзер может все с crud сущностью то просто вешаю на нее группу. но в конце концов с бека оно конечно выпрямляется все и фронту прилетают только пермишены.

    • @dev-workshop
      @dev-workshop  8 месяцев назад +1

      @@Dikodance интересное решение. Да, я скорее к тому, что с бека прилетал один тип сущностей, по которому определяются доступы. Для единообразия

  • @user-quasarDiO
    @user-quasarDiO 11 месяцев назад

    Крутая тема , давай продолжение , видео понравилось !!!

  • @user-gy3rm9hf7m
    @user-gy3rm9hf7m 10 месяцев назад +1

    🔥🔥🔥

  • @amir18n
    @amir18n Год назад +1

    Спасибо! полезные знания

  • @technews2324
    @technews2324 Год назад +1

    Спасибо!

  • @andreymor_ozzy8143
    @andreymor_ozzy8143 2 года назад +1

    Спасибо, жду продолжение видео

    • @dev-workshop
      @dev-workshop  2 года назад

      А какое продолжение ты ждешь?)

    • @user-tm5ow3et4l
      @user-tm5ow3et4l 2 года назад

      @@dev-workshop вроде было сказано что будет вторая часть с кастомной директорией

    • @dev-workshop
      @dev-workshop  2 года назад

      @@user-tm5ow3et4l А хочется именно с директивой? Или с компонентом? Или с супер злобной директивой?

    • @ulyanov_life
      @ulyanov_life 2 года назад +1

      @@dev-workshop с директивой лучше. с компонентом все понятно

  • @ruslan_nurgaleev
    @ruslan_nurgaleev Год назад +1

    Спасибо, очень полезное видео

  • @akad1981
    @akad1981 2 года назад

    Доступно. Полезно. Ждем продолжения.

    • @dev-workshop
      @dev-workshop  2 года назад

      Спасибо!) Скоро будет еще :)

  • @YellowPanamka
    @YellowPanamka 2 года назад +2

    Спасибо

  • @fluffyartdev
    @fluffyartdev 5 месяцев назад

    Видео полезное, для новичком будет очень здорово, но есть пара нюансов:
    1. Глобальный скоуп работает только в рамках шаблона. В скрипте все равно придется доставать хуком или еще как-либо.
    2. В данном случае, хоть сама задача авторизации и является глобальной, все таки стоит еще задуматься о том, чтобы сделать хуки импортить от туда хук + енам.
    Тем более, если делать директиву или компонент обертку, то это уже не выглядит таким накладным)

    • @dev-workshop
      @dev-workshop  5 месяцев назад

      1. Полностью согласен, это была распространенная практика со 2 вью, в третьем она почти забыта
      2. Такой задачи не стояло, видео и так объемное)

  • @tatianovnafrutti8982
    @tatianovnafrutti8982 Год назад +3

    Супер! Спасибо за крутейший контент!!! Очень помогаете) Было бы круто увидеть какой-нибудь мини курс или туториал , так сказать --- разработка небольшого приложения с применение Vue + MongoDB + Express. А еще может GraphQL + Apollo , было тогда вообще бомба! Или заместо Vue , использовать Nuxt 3. Очень помогли бы)

    • @dev-workshop
      @dev-workshop  Год назад +1

      Добрый день, приятно читать, спасибо!) Сейчас как раз изучаю 3 накст. Может быть когда вернусь - появятся видосы по нему :)

    • @tatianovnafrutti8982
      @tatianovnafrutti8982 Год назад +1

      @@dev-workshop Было бы прям супер и полезнейше!)) Очень буду ждать, спасибо большое!!!

  • @antonnevskiy3027
    @antonnevskiy3027 9 месяцев назад

    Полезное видео, спасибо!
    Жаль, не так много контента на канале

    • @dev-workshop
      @dev-workshop  9 месяцев назад

      Привет! Спасибо, в связи с работой сложно выделить время на видосики

  • @katana_yaiba
    @katana_yaiba 2 года назад

    Спасибо большое, очень полезное и интересное видео с новым для меня подходом!

  • @TheHaykokalipsis
    @TheHaykokalipsis 2 года назад +1

    Красава, давно ищю нечто подобное, жаль тайпскрипт не понимаю. Ждём продолжения с компонентом и директивой.

    • @dev-workshop
      @dev-workshop  2 года назад

      Спасибо! Добавлю в список идей для видео :)

  • @vegeman8954
    @vegeman8954 2 года назад +1

    Прикольно. Продолжай бро!)

  • @Vladislav1449
    @Vladislav1449 6 месяцев назад

    Привет! Очень жаль, что видео перестали выходить довольно продолжительное время😢 Надеюсь, еще появится тут новый, полезный контент!❤

    • @dev-workshop
      @dev-workshop  6 месяцев назад

      Привет!
      Может быть если я найду того, кто будет монтировать видосы, тогда наладится регулярность ))

  • @Xokyopo
    @Xokyopo 2 года назад +2

    Если посмотреть пристально то это просто роли ролей. А следовательно не так уж и необходимы. Т.е. ничто не мешает завести ROLE_BOOK_READER и их назначать пользователям.
    Так же такой подход рухнет если много разных моделей.
    Например на 1 таблицу только для ее просмотра потребуется 3 модели, и по факту для каждой из них придется свою роль завалить. А 3 потому что 1 полная, 2 умеренная, 3 справочник для подстановки.

    • @dev-workshop
      @dev-workshop  2 года назад +1

      Ты все правильно говоришь. Однако:
      1) Если имеем очень маленькие роли/скоупы/пермишены, их будет много. Чтобы применять их на пользователя нам не очень удобно делать это по одному и мы хотим их объединить в некоторые группы. Группа ролей? Иль роль с несколькими пермишенами/скоупами?
      В данном случае роли нужны только для удобства группировки пермишенов/скоупов.
      2) Не совсем понял пример с моделями. На справочник для таблиц, в большинстве случаев достаточно иметь один скоуп - loggedIn так, как большой секретности, как правило, в справочниках нет.
      Конечно, чем больше логики, чем больше скоупов/пермишеннов/ролей тем сложнее кодовая база.
      Однако для веб приложений с ролевой системой, как правило, хватает 3-4 ролей и с ними 20-30 пермишеннов, это достаточно читаемо.
      Ну и конечно этот подход не лишен недостатков. Нужно критично относится к информации и анализировать, подойдет ли такой подход вам, или нет :)
      Этот подход подходит для меня в большинстве приложений с ролевой системой и я о нем рассказал :)

    • @zergzerg4844
      @zergzerg4844 Год назад

      На бэке на C# в фреймворке такой же подход используется. Только там оно зовется Claims и также используется для раздачи точечных доступов, а подход с только с ролями типа админ , юзер считается уже устаревшим. Так что не утрируй, нормальный пример с раздачей мелких прав. Автору спасибо, за пример

  • @ulyanov_life
    @ulyanov_life 2 года назад

    Спасибо за видео, Серег! Предлагаю тему для нового видео: моки для фронта. можно раскрыть разные варианты с плюсами и минусами.

  • @grantorino3465
    @grantorino3465 Год назад

    Огонь!

    • @dev-workshop
      @dev-workshop  Год назад

      Рад, что понравилось)

  • @surr3955
    @surr3955 2 года назад +4

    Спасибо за то, что делишся опытом! 16:00 как насчёт provide/inject? И конешно мы все ждём продолжения про дерективу v-scope! И еще было бы интересно, как реализовать авторизацию нескольких аккаунтов (с разными правами) и переключение между ними.

    • @dev-workshop
      @dev-workshop  2 года назад

      Спасибо!) насчет provide/inject я отношусь к нему сильно хуже, потому что
      1) не очень очевидно
      2) нужно следить чтобы провайдер существовал в дом дереве, если провайдер лейаут и их несколько - начинается страдание
      3) синтаксис и типизация немного страдают
      Я видел много боли, которую порождает provide/inject и видил мало проблем, которые он решает.
      В видео про аккордион, кстати, используется provide/inject
      По поводу разных пользователей - этот видос именно про авторизацию. метод fetchUserOnce как раз загружает информацию и скоупы для конкретного пользователя. ПОсле того, как прикручивается аутентификация, для каждого пользователя будут свои собственные скоупы. В видео я эмулировал это одним моком, но на бою для каждого свои скоупы

  • @xeleos
    @xeleos 2 года назад

    Неплохо!

    • @dev-workshop
      @dev-workshop  2 года назад

      Буду дотягивать до «супер» :)

  • @mikhailwalle9556
    @mikhailwalle9556 Год назад +1

    Буду чертовски благодарен, если прокомментируешь данную логику в контексте приложения с стейт менеджером (Pinia, Vuex).

    • @dev-workshop
      @dev-workshop  Год назад +1

      На самом деле можно оставить всю логику так как она есть вне зависимости есть стейт менеджер или его нет :) Если у вас нет ssr
      Если же есть сср, тут и логику поковырять нужно будет и думать как данные с сервера на клиент передать и как раз для этого можно воспользоваться стейт менеджером

  • @user-xw9mx7jv3z
    @user-xw9mx7jv3z 2 года назад

    Супер круто, посмотрел все видео) всё-таки интересует вопрос.. почему композиция, а не опции? И будут ли видео по композиции. Хотя судя по видео, это уже пройденная тема))

    • @dev-workshop
      @dev-workshop  2 года назад

      Привет! Я очень рад, что тебе понравилось!
      Видео выходят не последовательно а как захочется что-нибудь рассказать :)
      Композиция помогла нам всем уйти от миксинов и других болей и принесла новые:)
      Когда-нибудь выйдет видео, в котором я расскажу как я пишу приложения без стора, разделив все на домены и сервисы. Но чуть позже :)
      P.S. мне опции нравятся больше, чем композиция и новая система реактивности, однако старые подходы имели проблемы с разделением ui и логики.

  • @shahid1508
    @shahid1508 11 месяцев назад

    Динамические группы/роли/скоупы то еще зло на деле, хоть и звучит красиво и как бы логично))

    • @dev-workshop
      @dev-workshop  11 месяцев назад

      Я согласен, но иногда от этого никуда не уйти)

  • @adiletomurbekov9300
    @adiletomurbekov9300 6 месяцев назад

    Здравствуйте, можете сделать пожалуйста видео про авторизацию.

    • @dev-workshop
      @dev-workshop  6 месяцев назад

      Здравствуйте, может быть ближе к лету, если найду редактора для видео

  • @izzy7541
    @izzy7541 10 месяцев назад

    А нужна ли вообще директива для доступов? По моему получится велосипед в виде кастомного v-if

    • @dev-workshop
      @dev-workshop  10 месяцев назад +1

      Скорее философский вопрос) Да, это будет кастомный v-if. Да, можно использовать просто v-if. Но идея директивы для доступов разделить условное отображение связанное с бизнес логикой и условное отображение связанное с ролевыми доступами
      Плюс по такой директиве легко прочитать доступы прям в шаблоне, тогда как условия v-if часто заворачиваются в компьютед свойства, для которых нужно лезть в код

  • @user-vf7pc4tn9z
    @user-vf7pc4tn9z Год назад

    сделаешь подробнее уроки с vue laravel по этой теме?

    • @dev-workshop
      @dev-workshop  Год назад

      Привет! Я не особо умею в PHP :( по этому скорее нет. Плюч видео сейчас временно не выходят

  • @Markeldo
    @Markeldo Год назад

    Спасибо за видео, было полезно. Есть вопросик такой...
    А как решать проблему доступа к определённым объектам? Допустим, мы даём удалять книгу только тому, кто её создал. При этом всем пользователям видны все книги. Пытался продумать это в рамках этих скоупов, но что-то "не выходит каменный цветок".

    • @dev-workshop
      @dev-workshop  Год назад

      Рад, что видео понравилось! Такое ограничение точно должно быть известно бекенду, соответсвенно есть несколько вариантов: проставить флаг на беке, зашить поле scopes для каждого объекта на беке и докрутить логику на фронте, зашить эту логику на фронте, путём сравнения Id текущего пользователя и автора книги. У каждого способа есть свои плюсы и недостатки, нужно смотреть на конкретный проект

    • @Markeldo
      @Markeldo Год назад

      @@dev-workshop ещё вопрос. Сергей, почему scope, а не permission? Просто более короткая запись?

    • @dev-workshop
      @dev-workshop  Год назад

      @@Markeldo Скорее вкусовщина) На моей первой работе были скоупы и я к ним привык)