FastAPI - Регистрация и Авторизация Пользователей #5

Поділитися
Вставка
  • Опубліковано 19 сер 2024

КОМЕНТАРІ • 283

  • @artemshumeiko
    @artemshumeiko  Рік тому +19

    💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡
    Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot

    • @user-xr1ro9kn9q
      @user-xr1ro9kn9q Рік тому +1

      Здравствуйте, а вы можете отдельно сделать видео по созданию кастомного пользователя. Вы говорили в этом видео, что изначально была именно такая идея. Только со всеми мелочами и плюшками. Это очень важно. Если не Вам будет не очень сложно)

    • @__-fx5gd
      @__-fx5gd 6 місяців тому

      Здравствуйте! Начал изучать FastAPI по вашему курсу, столкнулся с проблемой: после изменения названия таблиц в модели БД и создания новой ревизии, не могу обновиться до этой ревизии т.к название таблицы не изменяется, а просто создается новая: sqlalchemy.exc.InternalError: удалить объект таблица roles нельзя, так как от него зависят другие объекты.

    • @artemshumeiko
      @artemshumeiko  6 місяців тому

      @@__-fx5gd достаточно поменять в миграции код на ALTER TABLE table_name RENAME TO new_table_name, чтобы не удалялась и создавалась таблица

  • @programming_etc
    @programming_etc Рік тому +65

    Я занимаюсь разработкой на python уже почти 5 лет и прекрасно понимаю всё, что ты показываешь в своих видео, но твоя подача всё равно заставляет смотреть до конца. Очень приятная картинка, превью и подача, просто кайф. Желаю тебе успехов и побольше подписчиков для такого годного контента!

    • @fresh_wind87
      @fresh_wind87 Рік тому +2

      зачем тогда смотреть когда знаешь?

    • @Gregory-vc2vs
      @Gregory-vc2vs Рік тому +3

      @@fresh_wind87 а как понять, что ты это все знаешь, не посмотрев?

    • @user-vg3hp6fe6v
      @user-vg3hp6fe6v 8 місяців тому

      @@Gregory-vc2vs когда знаешь то знаешь что знаешь..хых

    • @tagabenz9808
      @tagabenz9808 8 місяців тому

      Прикол в том что кто понимает не очень смотреть не так уж легко

  • @eva_grin_0941
    @eva_grin_0941 Рік тому +8

    Спасибо огромное за такое видео! Всё четко, по полочкам, ничего лишнего, уместные комментарии с объяснениями. Приятно вас слушать и смотреть - обстановка дома приятная и сами вы симпатичный. Надеюсь увидеть ещё больше ваших видео в будущем!

  • @user-fq1en7yv3z
    @user-fq1en7yv3z Рік тому +3

    Потратил пол дня на эту библиотеку, а тут за 40 мин. все по полочкам) Однозначно подписка👍

  • @dmitryrotanin
    @dmitryrotanin Рік тому +4

    Спасибо за курс! Подача супер крутая, лучше туториала на русском я не встречал! Артем, ты молодец! Отличная работа, я восхищаюсь и параллельно продолжаю курс!

  • @griigorievamaria
    @griigorievamaria Рік тому +4

    Ура, новое видео! Классный новогодний фон😍

  • @iforvard
    @iforvard Рік тому +13

    При создании хендлера для логина обычно рекомендуется использовать метод POST вместо метода GET. Это связано с тем, что метод GET передает данные формы через URL-адрес, который может быть легко просмотрен и перехвачен злоумышленником.
    Если пользователь вводит свои учетные данные в форму для входа, используя метод GET, то эти данные будут открыто передаваться в URL-адресе. Это может стать проблемой для безопасности, так как злоумышленник может перехватить эти данные с помощью простого сниффинга или посредника.
    С другой стороны, при использовании метода POST данные формы передаются в теле запроса, а не в URL-адресе. Это обеспечивает большую безопасность, так как данные не будут открыто передаваться и будут скрыты от посторонних глаз.
    Поэтому, чтобы обеспечить безопасность пользователей, рекомендуется использовать метод POST для передачи учетных данных при логине.

    • @user-dt5nz3op8y
      @user-dt5nz3op8y Рік тому

      GET запрос зашифрован, кроме самого домена и порта

    • @iforvard
      @iforvard Рік тому +3

      @@user-dt5nz3op8y ,
      Шифрование не зависит от типа запроса это зависит от http или https

  • @cyber_warrior14
    @cyber_warrior14 11 місяців тому +1

    Артем, у вас отличная подача и умение хорошо объяснять сложный материал (что на самом деле, очень редкое качество). Большое вам спасибо за ваши уроки и удачи в работе и развитии канала!

  • @user-fd1kv4kt3t
    @user-fd1kv4kt3t Рік тому +1

    Спасибо большое. Наверно самое понятное объяснение из всех видео, которые я пересмотрел

  • @andrewzh4660
    @andrewzh4660 Рік тому

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

  • @user-tt9xr9tb1i
    @user-tt9xr9tb1i Рік тому +4

    Ооо наконец, ждал этого именно прр юзерс!

  • @alekseyveld7559
    @alekseyveld7559 Рік тому +11

    Артём, ОГРОМНОЕ СПАСИБО ЗА ЭТО ВИДЕО! Ты создаешь очень годный контент и рассказываешь о том, что сейчас не найти на UA-cam. Расскажи пожалуйста про Fastapi-admin или Starlette-admin или про любую админку которую использую с Fastapi. СПАСИБО!

    • @artemshumeiko
      @artemshumeiko  Рік тому +1

      Спасибо за комментарий! Наверное, через несколько видео будет материал про админку

    • @AS-fk5fw
      @AS-fk5fw Рік тому

      @@artemshumeiko круто! я по ключевому слову fastapi admin попал на канал

  • @hugo-onzakorderra8851
    @hugo-onzakorderra8851 Рік тому +4

    Идентификация - определение пользователя. Аутентификация - проверка принадлежности идентификатора тому пользователю, который этот идентификатор предъявляет. Авторизация - проверка прав пользователя на использование конкретного ресурса.

  • @bozarmax
    @bozarmax Рік тому +1

    Невероятная подача материала. Спасибо большое!

  • @dj4ng0_
    @dj4ng0_ 3 місяці тому +1

    6 лет на джанге сижу, хочу на фастапи перебираться. Вижу только плюсы пока. Из минусов наверно то, что нет админки встроенной и то, что от orm нужно отучаться и привыкать к алхимии. Буду своё приложение переписывать на фастапи. Короче, спасибо Артём. Лайкос.

  • @AS-fk5fw
    @AS-fk5fw Рік тому +1

    На работе как раз FastAPI, но для пет-проекта в этой же компании не хватает знаний. Спасибо за твой урок, очень ценно! вернусь ещё на канал)

  • @dmitrygusev4522
    @dmitrygusev4522 4 місяці тому +1

    Артем, большое спасибо за Ваши уроки. С удовольствием постигаю FastAPI. ) Надеюсь , с Вашей помощью , в ближайшее время создать какое-то всое приложение ).

    • @artemshumeiko
      @artemshumeiko  4 місяці тому

      Спасибо! Успехов вам!

  • @eugeneyakimenko8843
    @eugeneyakimenko8843 Рік тому +1

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

  • @99phenomenon
    @99phenomenon Рік тому +1

    Отличный канал! Как раз решил попробовать FastAPI!

  • @user-yo4nd6tm1h
    @user-yo4nd6tm1h 9 місяців тому +2

    Автор красавчик так-то. Очень хорошо доносишь материал, но правда на сегодняшний день FastAPI Users изменили тот код который мы сначала скопировали не думая, а потом задумались, по этому в итоге вообще ничего не понятно касательно класса, приходится переписывать как было у автора. Теперь там не Column а Mapped...

  • @user-yk4qq4nt7o
    @user-yk4qq4nt7o Рік тому +1

    Благодарю за урок, много полезной информации!

  • @user-gl1ot4ic6m
    @user-gl1ot4ic6m 10 місяців тому

    Спасибо! Очень понятно, преподавательский талант вас не обошел стороной-:)))

  • @MariaShakuro
    @MariaShakuro Рік тому

    Большое спасибо за контент! В русскоязычном сегменте пока самый доступный вариант объяснения

  • @user-qd9gc9fk1k
    @user-qd9gc9fk1k Рік тому +6

    Подскажите пожалуйста, почему при входе требуется ввести username и password, но вместо username мы вводим email?

  • @newuser6989
    @newuser6989 10 місяців тому

    Спасибо за курс, очень помогает вкатиться в бэк =)

  • @hanmahanma5067
    @hanmahanma5067 6 місяців тому

    Большое спасибо за ваш курс!

  • @user-kk3pt2dj7u
    @user-kk3pt2dj7u Рік тому

    После джанго так непривычно, что начал понимать тему после третьего просмотра с параллельной практикой, но материал отличный

  • @0limjon
    @0limjon Рік тому

    Спасибо за ролики, хороший старт для изучения FastAPI

  • @zhomartsaiynov1145
    @zhomartsaiynov1145 Рік тому +1

    Спасибо тебе большое, Артём! Всё чётко разъяснил за авторизацию 😂 пожалуйста, продолжай пилить видосы дальше🥵 хотел бы увидеть интеграцию с AWS S3

  • @gusevsky
    @gusevsky Рік тому

    Для меня как новичка в программировании, прикольно что простым языком без разных замудростей)) особенно полезны вставки: "это всего лишь ........." тк за громкими названиями как правило прячутся простейшие вещи.

  • @muhammadumarsotvoldiev9555
    @muhammadumarsotvoldiev9555 11 місяців тому

    спасибо за ваше старание. Очень полезный контент!

  • @viaceslavkiptilov1203
    @viaceslavkiptilov1203 4 місяці тому

    Курсы - логично, практично и фантастично :) СПСБ,!

  • @VladStone
    @VladStone Рік тому

    кайф) давно не было видео и думал, что пропал) спасибо!

  • @egorcherevichin6128
    @egorcherevichin6128 6 місяців тому

    Очень крутые видео, спасибо за курс

  • @neweternalicon207
    @neweternalicon207 9 місяців тому

    Спасибо за такой полезный урок!

    • @artemshumeiko
      @artemshumeiko  9 місяців тому +1

      Рад помочь :) Спасибо

  • @user-ix5vl2ry8j
    @user-ix5vl2ry8j 18 днів тому

    супер! спасибо!! мне понравилось!

  • @user-nl2mc5le7o
    @user-nl2mc5le7o Рік тому

    как всегда, спасибо большое!! Все вместе с тобой проделала, все поняла ))

  • @sergeyasdf2677
    @sergeyasdf2677 Рік тому

    Спасибо большое за курс, очень информативно

  • @through-it
    @through-it 7 місяців тому +4

    я бы не копипастил поля из базовых классов библиотеки в дочерние классы проекта, ведь тем самым вы сами же нарушаете своё правило с повторяемостью кода. А большая проблема повторяемости кода - отследить изменения во всех его частях. Если библиотека изменится, то очень легко упустить изменения и нарваться на непредвиденные ошибки. Дочерние классы в данном случае должны расширять функционал, а не подменять его.

    • @pygleb
      @pygleb Місяць тому

      Ты имеешь ввиду не копипастить код , а, например, пользовться методом super()?

  • @AnatoliyDekorstyle
    @AnatoliyDekorstyle 11 місяців тому

    Отличный формат и подача! Респект автору огромный! однако хотелось бы чуть больше всяких подробностей насчет секьюрности, пусть где и что почитать - и то конкретика)) а то легкий сумбур в голове у меня как у новичка...

  • @adammason482
    @adammason482 Рік тому

    Огромное спасибо за урок!

  • @dikiykoban2150
    @dikiykoban2150 Місяць тому

    хотелось бы больше видео где идёт фулстек разработка, чтобы параллельно всю работу бэкенда одевать в красивый фронтенд

  • @cppplus9537
    @cppplus9537 6 місяців тому

    отличное видео, ждем продолжении авторизацию!

  • @DaddyFelix7
    @DaddyFelix7 11 місяців тому

    сердечно благодарю за уроки)

  • @AlexandrSpirit
    @AlexandrSpirit 11 місяців тому +1

    Сначала думал что автор ошибся с синтаксисом моделей БД алхимии. Но нет. Действительно, в последней версии алхимии поля таблицы описываются через Mapped а не Column
    И последняя версия FastApi-Users так же в классе через Mapped описывает.
    Имейте это в виду, и по чаще смотрите доки )

  • @bestmusic4553
    @bestmusic4553 10 місяців тому +4

    А такой вопрос почему при аутентификации мы в поле username вводим email, а при введении зареганного username выходит ошибка?

    • @checkanon6908
      @checkanon6908 8 місяців тому

      привет! удалось найти ответ?

  • @belford123
    @belford123 9 місяців тому

    Мощно! Спасибо! С меня лайк и подписка!

  • @orthodox-chanel
    @orthodox-chanel 53 хвилини тому

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

  • @seduelgames8765
    @seduelgames8765 5 місяців тому

    Очень интересно! Не смотрел есть ли у тебя на канале более подробно об регистрации, аутентификации и авторизации видео. Какие есть подходы, лучшие практики и т.д. Хотелось бы увидеть такое.

  • @aiornerok3931
    @aiornerok3931 Рік тому +4

    А что на счет refresh tokena

  • @user-yh3to6hl5u
    @user-yh3to6hl5u Рік тому

    Красавчик, классный урок 👍

  • @djdididod9928
    @djdididod9928 3 місяці тому +1

    Переписал код полностью, запустил, вылезает ошибка "valueerror: invalid literal for int() with base 10: 'None'. Уже достаточно продолжительное время пытаюсь найти ошибку, не подскажешь, что делать?

  • @user-lw1ov2os1g
    @user-lw1ov2os1g 6 місяців тому

    Артём добра тебе и всех благ! Очень крутое видео!

  • @nameless_nameless
    @nameless_nameless Рік тому +3

    Боооольшое спасибо за уроки.
    Однако сейчас в 'fastapi_users' вместо "Column" используется "mapped_column". Но пока ничего не крякнуло =)

  • @user-mx9pu5fb6v
    @user-mx9pu5fb6v Рік тому +6

    Когда создаёшь отдельную директорию/сервис с авторизацией все волки делают ауф 😂
    Не смог удержаться))

  • @IgorVin1988
    @IgorVin1988 Рік тому +5

    40:10 Мы же вход осуществляем по email, верно? А поле называется "username". А где это исправить?

    • @Leks_bezdar
      @Leks_bezdar Рік тому +2

      Тоже очень волнует этот вопрос. Если вы уже нашли ответ, поделитесь им, пожалуйста.

    • @checkanon6908
      @checkanon6908 8 місяців тому +1

      удалось найти ответ?

    • @Ilugar
      @Ilugar 6 місяців тому

      ​@@checkanon6908 в моделях поменяй и сделай миграции, делов то

  • @user-sl6br7uu4q
    @user-sl6br7uu4q Рік тому

    давай давай. продолжай в тои же духе. Больше видео

  • @cfhel1
    @cfhel1 9 місяців тому +1

    Будьте внимательны: за username в Сваггере считается электронная почта, а не тот username, который мы ввели в модель. Я долго тупил :)

  • @freemy3778
    @freemy3778 Рік тому

    Видео просто огонь!!!!!

  • @user-mh1hs1by6e
    @user-mh1hs1by6e Рік тому +2

    А кто-то может подсказть почему при аутентификации поле называется username, а вводить надо email?

    • @Leks_bezdar
      @Leks_bezdar Рік тому +2

      Тоже интересно. Вы узнали ответ?

  • @fugitiveom
    @fugitiveom 9 місяців тому

    Артем, привет! Классная серия уроков, спасибо! Но некоторые вещи, честно говоря, расстраивают. Например, пароль ХЕШируется, а не шифруется. ХЕШ - не обратимая функция, никаким образом пароли не декодируются. На бэке сравниваются их хеши. То есть не пароль декодируется, а в БД хранится хеш и поступающий пароль тоже хешируется. И вот эти хеши сравниваются. И второе, у метода POST нет никакого другого "уровня защиты", он отличается от GET только тем, что пользователь не видит эти переменные в адресной строке и всё.

  • @cosm1cavenger239
    @cosm1cavenger239 Рік тому

    спасибо за урок больше четырех

  • @7527497
    @7527497 Рік тому

    Артем, насчет пересоздания миграции, вы просто удалили миграции и все у вас заработало. У меня получилось только и с удалением таблиц в БД, иначе требовало правило on_delete="CASCAD"

  • @orthodox-chanel
    @orthodox-chanel 4 дні тому

    c 10й попытки заработало и у меня. Все время после регистраици возвращало ошибку сервера крутил все что можно и так и этак пока в конце не снес всю базу и руками не прописал на чистом sql создание таблиц. Видимо рано мне еще алембик или что-то не так...

  • @lovi3410
    @lovi3410 Рік тому +2

    Артём, вас действительно интересно смотреть но многое в этом видео сделано "ну просто так надо", да с объясненими, но очень сложно если хочется понять всю структуру работы программы, а не на лету, в сумме очень сложно
    UPD: Читайте доки

  • @user-vf7pc4tn9z
    @user-vf7pc4tn9z Рік тому +1

    запишешь подробнее про jwt мб даже с подтверждением почты очередями и чтоб с докой сходилось что то очень все туго зашло но интересно

  • @ivanstereotekkofficial5353
    @ivanstereotekkofficial5353 Рік тому +3

    Скажите а в чем смысл определять юзера два раза? Один раз в models.py через metadata а второй раз в database.py как бы кастомизируя класс User из FastAPI-Users ?

    • @artemshumeiko
      @artemshumeiko  Рік тому +2

      Действительно, смысла в этом нет. Это была моя ошибка. Достаточно оставить класс User с наследованием от Base

  • @user-bf6hz5sf9s
    @user-bf6hz5sf9s 11 місяців тому +4

    подскажите пожалуйста
    40:08 почему в поле username мы вбиваем почту?
    почему fastapi users по дефолту использует почту в качестве логина для входа?
    можно ли это как то исправить чтобы вместо почты пользователь вбивал свой username?

    • @checkanon6908
      @checkanon6908 8 місяців тому

      удалось найти решение?

    • @user-bf6hz5sf9s
      @user-bf6hz5sf9s 8 місяців тому

      @@checkanon6908 да я почитал документацию и там разработчики написали что они решили использовать почту как username так как почта это всегда уникальное значение и поэтому точно не будет возникать никаких конфликтов. К сожалению я не понял каким образом можно использовать в качестве username настоящий username. Вроде как нужно что то изменить в коде самой библиотеки но из за этого начинают везде возникать ошибки и конфликты. По этой причине проще просто на фронтенде использовать форму email а в бд записывать данные в username. Звучит костыльно? Но как сделать по другому я не знаю.

  • @dunker4495
    @dunker4495 11 місяців тому +1

    Артём, ты так и не рассказал, что делать, если истекло время жизни cookie!

  • @user-ei1by3ye6o
    @user-ei1by3ye6o 5 місяців тому

    16:51 - нехорошо хардкодить id строки в БД. В БД совсем не обязательно роль "обычный пользователь" будет под id=1.
    Несколько раз инициируешь БД и сносишь - id всё время меняются. К ним нельзя привязываться.
    По-хорошему тут надо сделать запрос в БД с поиском id для нужной нам роли. И присвоить этот найденный id.

  • @Temirlan
    @Temirlan 8 місяців тому

    Спасибо большое!

  • @Filinius1
    @Filinius1 Рік тому

    Спасибо большое за контент. Продолжай в том же ритме. Желаю многократного увеличения просмотров и подписчиков..

  • @vinc2OOO
    @vinc2OOO 6 днів тому

    "detail": "JWTError" в dependencies хотя токены совпадают. В чем может быть дело?

  • @haskelllisp5998
    @haskelllisp5998 Рік тому

    Как всегда - красаучыг

  • @santex85
    @santex85 Рік тому

    Для продвижения. Но подача и правда супер

    • @artemshumeiko
      @artemshumeiko  Рік тому

      Спасибо

    • @santex85
      @santex85 Рік тому

      @@artemshumeiko скоро на ваш курс на степике запишусь. 😉

  • @CrozetIs
    @CrozetIs Місяць тому

    А где можно подробнее познакомится с сессиями? Не совсем понятно для чего то и зачем

  • @rodnov-kirill
    @rodnov-kirill Рік тому

    очень интересно спасибо

  • @zoree2684
    @zoree2684 Рік тому +1

    на счет того что при создании юзера поле role_id было user, а нельзя было бы в модели указать Column('role_id', Integer, ForeignKey(role.c.id), default=1)? Вместо того что бы ковырять библиотеку?

    • @asburdransomnickname
      @asburdransomnickname 11 місяців тому

      default сработает если при добавлении в базу значение не указанл, а так как в схеме UserCreate клиент может указать значение, то оно попадет в базу. Лучший вариант - исключить поля is_superuser, is_active, is_verified и role_id и использовать аргумент default для базы данных или переназначать эти переменные в обработчике эндпоинта

  • @tony_jin
    @tony_jin Рік тому +2

    Привет, спасибо за видео! Мб снимешь сравнение fast, rest, soap API, сходства различия и для чего используются?

    • @artemshumeiko
      @artemshumeiko  Рік тому

      Привет! Спасибо за предложение, я подумаю

  • @deniss4509
    @deniss4509 Рік тому +1

    Спасибо за видос. Странное решение позволить пользователям вводить поля типа is_admin. Вместо того чтобы убрать их с реквеста, вы сломали логику сохранения. Надеюсь исправите в будущем.

    • @artemshumeiko
      @artemshumeiko  Рік тому

      Согласен, плохая реализация

  • @viciouscircle4307
    @viciouscircle4307 Рік тому +1

    Всем привет! Оч нравится курс, все вроде как доходчиво, но не понимаю я одной штуки.
    Почему мы создаем модель юзера повторно? Или мы в принципе можем удалить модель, которую мы создали ранее и использовать ту, что в фастапи-юзерс?

    • @artemshumeiko
      @artemshumeiko  Рік тому +2

      Все верно, можно использовать модель из fastapi-users. В уроке была допущена ошибка DRY
      Желательно вообще все модели переписать с Table() на классы

  • @user-lm8cb9rd3v
    @user-lm8cb9rd3v Рік тому

    Артём, хорошее дело делаешь! Молодец, продолжай!
    Вопрос по ходу дела. Я понимаю что Python язык не строгой типизации, но все же...
    Если заглянуть в класс SQLAlchemyBaseUserTable
    то можем там увидеть следующий странный код:
    hashed_password: str = Column(String(length=1024), nullable=False)
    is_active: bool = Column(Boolean, default=True, nullable=False)
    is_superuser: bool = Column(Boolean, default=False, nullable=False)
    is_verified: bool = Column(Boolean, default=False, nullable=False)
    Мы говорим что переменная hashed_password имеют тип str, is_active это bool и т.д. и тут же берем и просто назначаем объект с типом "Column"
    Или, мы говорим что у нас id имеет тип int и тут же тоже пихаем в него "Column":
    class User(SQLAlchemyBaseUserTable[int], Base):
    id = Column(Integer, primary_key=True)
    Можете объяснить, для полного понимания, в чем прикол и как это работает?
    Спасибо

    • @vsevolodtetervak257
      @vsevolodtetervak257 Рік тому +4

      Привет)
      Немного занудства сначала - питон имеет динамическую сильную типизацию. Динамическая - типы вычисляются в момент выполнения. Сильная - нельзя смешивать разные типы в выражении (нельзя вычесть строку из инта, привет, js)
      Надо понять два момента:
      1. тип через двоеточие после имени переменной:
      hashed_password: str = Column(String(length=1024), nullable=False)
      Это не объявление типа, это подсказка типа. Если будете искать больше информации, то ищите type hinting. Подсказка не накладывает никаких ограничений, по факту в переменной может лежать любой тип. Это именно что подсказка для разработчика (подсказки синтаксические будут от IDE итд)
      2. id имеет тип int и тут же тоже пихаем в него "Column"
      С чего бы начать. Если вкратце - это ORM. Задача ORM - абстрагировать разработчика от работы с БД. Мы используем один и тот же класс для определения таблицы в базе и для работы с объектами в нашей программе. То есть Column нужно для того чтобы библиотека делала корректные запросы при обращении к БД. Когда же мы будем работать с экземпляром класса User в коде, в поле id будет лежать int.
      Для понимания, обратите внимание, как в github.com/artemonsh/fastapi_course/blob/main/Lesson_05/main.py#L43 мы берем поле username экземпляра класса User. И хоть в классе бы объявили это поле как класс Column github.com/artemonsh/fastapi_course/blob/main/Lesson_05/auth/database.py#L21, при обращении к полю username мы получим строку (потому что в базе в колонке username лежит строковое значение).

    • @user-lm8cb9rd3v
      @user-lm8cb9rd3v Рік тому

      @@vsevolodtetervak257
      Привет!)
      Да, вправил мозги, теперь стало гораздо понятнее. Благодарю!

  • @maksimmatantsev8105
    @maksimmatantsev8105 Рік тому +2

    Артем, спасибо тебе за урок. Но объясни пожалуйста, для чего ты делаешь две одинаковые модельки юзера? Можно ведь создать одну и использовать только ее, не плодя одинаковый код.
    Если я в чем-то не прав и чего-то не понимаю - ответьте :)

    • @artemshumeiko
      @artemshumeiko  Рік тому +1

      Ошибся. Достаточно одной модели

  • @amalshakov
    @amalshakov 2 місяці тому

    просто выскажусь. 1) Как то это все мудрено, как теперь тут кастомного юзера сделать - представляется тяжеловатой задачей. Как-то в джанге это все проще. 2) Само использование библиотеки выглядит как по мне странным, мы не столько что-то импортируем и наследуемся, как постоянно копи-пастим из документации код по кусочкам). 3) + Постоянно лезим в написанный код в библиотеку, копипастим его себе, и чет там меняем 4) Сама документация написана прям отлично, при первом взгляде.

  • @sikirey4151
    @sikirey4151 4 місяці тому

    Здравствуйте, я установил pip install 'fastapi-users[sqlalchemy]' ,но PyCharm не видит эту библиотеку

  • @amalshakov
    @amalshakov 2 місяці тому

    37:55 Что ж ты фраер сдал назад)

  • @Artem-wk1vn
    @Artem-wk1vn Рік тому +2

    Спасибо за урок. А чем вы пользуетесь в продакшене? Разве похожей библиотекой авторизации? Или пишете кастомные доступы по ролям к данным на бекенде?

    • @artemshumeiko
      @artemshumeiko  Рік тому +1

      Раньше на продакшене я пользовался кастомной аутентификацией, для этого курса буду использовать fastapi-users (надеюсь довести проект до прода). Не вижу причин не использовать данную библиотеку, тем более, что ее можно удобно настроить под себя ввиду хорошо задокументированного кода: удалить дефолтные роли active/verified/superuser и добавить свои (или через такие же переменные, или, как делаю я, через таблицу с ролями).
      Конечно, перед выкаткой в прод нужно почитать исходники библиотеки для поиска возможных уязвимостей.

  • @user-rf4fy7dp7b
    @user-rf4fy7dp7b Рік тому

    а роль то почему не меняется? Шлешь 2 получаешь в бд 2, шлешь 1 - в бд тоже 1. Что я пропустил? user_dict['role_id'] = 1 добавлял

  • @fedosikDvaNulya
    @fedosikDvaNulya Рік тому

    Делаю все по видео. Версию ту же поставил. Регистрируюсь, логинюсь... Везде статусы 200. Но в куках JWT токена не вижу, кто-нибудь сталкивался?

  • @rozoomcool
    @rozoomcool 3 місяці тому

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

  • @bugagashenka3680
    @bugagashenka3680 8 місяців тому

    Идея с ролью для пользователя по умолчанию ясна, но мне кажется прописывать это в виде "1" в коде не очень читаемое и поддерживаемое решение, мало ли как потом базу данных поменяют, или кто будет этот код читать...

  • @Zloy_Sereja
    @Zloy_Sereja 6 місяців тому

    а как воспользоваться api с аутентификацией не используя swagger? В сваггере всё хорошо, но если пытаться отправить логин и пароль через request, то получается 400ая ошибка, типа я не то отправляю. С остальными эндпоинтами таких проблем нет. Как я понимаю там нужно этот логин и пароль во что-то завернуть, но не могу понять как

  • @user-hc1zb7uz7k
    @user-hc1zb7uz7k 5 місяців тому

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

  • @karjicohd1m0nd
    @karjicohd1m0nd Рік тому

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

  • @user-vf7pc4tn9z
    @user-vf7pc4tn9z Рік тому +1

    кстати очень много с докой не сходиться это такая фича? меня аж немного подгорать начало хотя курс свежий

  • @fedorkuruts
    @fedorkuruts Рік тому +2

    так тут один токен, а jwt вроде как refresh token предполагает. Где объяснения как refresh работает?)

  • @about_python
    @about_python Рік тому +1

    что-то видимо поменяли в библиотеках, потому что на данный момент после показанной автором аутентификации при входе отдает код 204 (No Content)

    • @user-rz2mf9un8o
      @user-rz2mf9un8o Рік тому

      согласен

    • @user-nm5ld9vr3k
      @user-nm5ld9vr3k 11 місяців тому

      Здравствуйте! Вы решили проблему?

    • @maximmashkov
      @maximmashkov 10 місяців тому

      cookie_transport = CookieTransport(cookie_max_age=3600)
      cookie_secure (True): Whether to only send the cookie to the server via SSL request.
      cookie_secure=False

    • @Bianconeri641
      @Bianconeri641 6 місяців тому

      @@maximmashkov , спасибо, брат!!!!

  • @ivanstasevich
    @ivanstasevich 9 місяців тому

    про нейминг не совсем так. класс действительно будет user, то таблицу можно называть users, это не является чем-то плохим

  • @Edvardmoskovka
    @Edvardmoskovka 28 днів тому

    А можете выпустить видео, где будет интеграция с фротендом, а то никак не получается интегрировать. А так спасибо за курс по Fastapi.

    • @artemshumeiko
      @artemshumeiko  27 днів тому

      на канале уже есть видео fastapi + frontend, называется "Fullstack - это просто". Выходило в начале года, обязательно посмотрите)

    • @Edvardmoskovka
      @Edvardmoskovka 26 днів тому

      @@artemshumeiko поищу, а по никак не могу связать формы регистрации и авторизации на фронте с беком. Если есть возможность - дайте ссылку на видео . спасибо

    • @Edvardmoskovka
      @Edvardmoskovka 26 днів тому

      @@artemshumeiko Это видео Как Связать Бэкенд и Фронтенд? React + FastAPI Full Stack приложение ?

    • @artemshumeiko
      @artemshumeiko  26 днів тому

      @@Edvardmoskovka да

  • @AlexFeynman
    @AlexFeynman 7 місяців тому

    А нельзя как-то скрыть параметры булевые при регистрации? Просто в модели дефолтные прописать и все, чтобы при инсерте не ругалась БД? Просто зачем выносить из класса отдельную функцию и переписывать ее, ощущение просто, что это костыль дикий прям и можно красивше)