#12. Аутентификация по токенам. Пакет Djoser | Уроки по Django REST Framework

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ต.ค. 2024

ความคิดเห็น • 80

  • @eugene1965
    @eugene1965 2 ปีที่แล้ว +10

    Уроки просто топ. Супер структурированный материал. Академическая подача. Лайки под каждым видео

  • @mariyaalberdina9917
    @mariyaalberdina9917 2 ปีที่แล้ว +7

    Большое спасибо за ваш труд, очень все понятно и хорошо изложено, а главное, много матриалов в плейлистах! С удовольствем с вами уже почти год)

  • @svetlekanos9411
    @svetlekanos9411 2 ปีที่แล้ว +4

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

  • @nomadicus77
    @nomadicus77 ปีที่แล้ว +5

    Жесть конечно удивляюсь, как же этот человек скрупулезно подошёл к объяснениям всё настолько легко и понятно, даже моментами кажется, что ты спишь(каждый кто смотрит находится во сне) спасибо❤❤❤

  • @СергейСмирнов-ь8у
    @СергейСмирнов-ь8у 2 ปีที่แล้ว +3

    Спасибо за подробное объяснение!
    👍

  • @VikMoc
    @VikMoc 2 ปีที่แล้ว +1

    Сергей, благодарю за плейлист!! Только полезная информация и отличная подача!!!

  • @deni.01
    @deni.01 ปีที่แล้ว +1

    Изучаю сейчас эту тему, автор очень классно и понятно объясняет. Огромное спасибо за работу!

  • @meganfox54
    @meganfox54 2 ปีที่แล้ว +1

    Лучшие уроки самыетточныетджанго токены

  • @andredru4278
    @andredru4278 ปีที่แล้ว +1

    Спасибо. Отличная подача.

  • @malyyigor34
    @malyyigor34 ปีที่แล้ว +1

    идеальное объяснение, спасибо!

  • @iam_foreman
    @iam_foreman ปีที่แล้ว +1

    Сергей, спасибо Большое!

  • @meganfox54
    @meganfox54 2 ปีที่แล้ว +1

    Спасибо отличные уроки токены

  • @NickTyupin
    @NickTyupin 2 ปีที่แล้ว +1

    Спасибо Сергей!

  • @alexsukhykh5666
    @alexsukhykh5666 2 ปีที่แล้ว +1

    Спасибо за уроки. Годнота))

  • @andrewharazdowskyy4771
    @andrewharazdowskyy4771 2 ปีที่แล้ว +5

    Уважаемый Сергей! Огромная благодарность за Ваше изложение этой очень интересной и практически полезной для меня темы. Понимаю, что "многознание порождает печаль" .) а учится надо самостоятельно, но после Вашего занятия - как в пословице "вкус приходит во время еды" - очень хочется задать в развитие темы вопросы. Буду благодарен за ответы "да-нет-не знаю" - но хочу не ошибиться в дальнейшем пути изучения.
    1. Если User A входит в систему по токенам с различных устройств X, Y, Z - для него будет сгенерирован один токен или Три разных.
    2. Часто в работе встречаюсь с подходом, когда, покупая аккаунт - пользоваться этим аккаунтом можно с определенного количества устройств... Мечтаю решить аналогичную задачу - ограничить для зарегистрированного пользователя количество одновременных подключений к ресурсу. Может ли, по Вашему мнению, прийти на помощь механизм авторизации и аутентификации по токенам? или нужен другой подход?
    В фильме "Операция Ы..." есть фраза - "... огласите пожалуйста весь список" )... но понимая Вашу занятость - может кто-то прочитавший - поделится опытом, или направит по нужному пути. Спасибо!

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

      Спасибо! По вопросам:
      1. Если используется один и тот же токен для идентификации, то ему ничего генерироваться не будет (вне зависимости от устройств). Новый токен создается в процессе авторизации. (Так по классике, хотя, поведение всегда можно изменить).
      2. Одновременные подключения или максимальное число разных типов устройств? Разные немного вещи. По числу одновременных подключений к серверу, насколько я знаю, настраивается на самом Веб-сервере, а с числом типов устройств, честно говоря, не сталкивался. Спросите в телеграм-канале, думаю, много интересного подскажут.

  • @ОлегКонстантинович-г2ж
    @ОлегКонстантинович-г2ж 2 ปีที่แล้ว +3

    Очень все доступно и понятно, а будут ли уроки по ролям пользователя?

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

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

  • @hovosimonyan799
    @hovosimonyan799 2 ปีที่แล้ว +2

    Спасибо

  • @viacheslavshambazov7445
    @viacheslavshambazov7445 2 ปีที่แล้ว +1

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

  • @mikhailtochenov981
    @mikhailtochenov981 2 ปีที่แล้ว +1

    Отлично, спасибо

  • @ЛетерКолл
    @ЛетерКолл 2 ปีที่แล้ว +1

    Топ контент, как и всегда)

  • @alexseydugin8109
    @alexseydugin8109 2 ปีที่แล้ว +1

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

  • @unaibekovbakhyt6517
    @unaibekovbakhyt6517 2 ปีที่แล้ว +6

    Хотел сына по вашим урокам помочь войти в мир айти. Можете ли расписать пункты плейлистов, для веб разработки на пайтон. В каком порядке учить? Спасибо за уроки

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +12

      Смотря что нужно. Если с нуля, пусть начнет с Питона, затем ООП. Если желание не пропадет, то HTML+CSS, JavaScript. Если и после этого не пропадет, то фреймворки Django + DRF, Agular, React и т.п.

  • @sergeygrigoryan4081
    @sergeygrigoryan4081 2 ปีที่แล้ว +1

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

  • @ChelovekPavuk555
    @ChelovekPavuk555 4 หลายเดือนก่อน +2

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

  • @ibrahimoglu
    @ibrahimoglu 2 ปีที่แล้ว +3

    👍

  • @МаксГофман-й5ф
    @МаксГофман-й5ф ปีที่แล้ว +2

    Спасибо за огромный труд ! Вопрос: когда мы вводи имя и пароль для входа, мы проходим аутентификацию, и если мы ее прошли, нам сервер дает токен или сессион айди, и дальше , при выполнении каких либо действий на сайте, сервер проверяет наши права доступа (проверяет авторизованы ли мы для этих действий), с помощью токена или сессион айди и ранее прописанных пермишенов , правильно ?

  • @zhop2062
    @zhop2062 11 หลายเดือนก่อน +1

    Спасибо большое за уроки! Может кто знает почему может не отображаться в правом верхнем углу имя пользователя? В шапке страницы: слева Django rest framework, а справа Root. Вот этот root у меня почему-то не отображается и все время написано Authentication credentials were not provided :(

  • @SergeiStukun
    @SergeiStukun ปีที่แล้ว +2

    Спасибо за урок) У меня вопрос. Если мы авторизуемся сначала через браузер, а потом решим зайти на сайт через телефон, то как приложение в телефоне поймет какой токен отправлять в запросе на сервер? Ведь токен был присвоен при первой авторизации через браузер ПК, и хранится соответственно там же в локальном хранилище

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

      это вам лучше спросить у сообщества в телеграм-канале по Django, ссылка или под видео, либо в описании канала.

  • @kolyanlock
    @kolyanlock ปีที่แล้ว +1

    А в документации где про строку в INSTALLED_APPS rest_framework.authtoken? Если следовать документации, как я должен был об этом догадаться?

  • @АлександрПотагашев
    @АлександрПотагашев 2 ปีที่แล้ว +2

    Чем токены отличаются от кук? И там и там после авторизации в каждом запросе в заголовке нужно указывать, так сказать, "ключ". и там и там он уничтожается после лог аута.

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +3

      С куками идет дополнительная проверка откуда они были переданы. Должен быть тот же браузер (тот же юзер). С токенами такой проверки не проводят, просто по факту, пришел, хорошо, не пришел, доступа нет.

    • @Manu-ei6tn
      @Manu-ei6tn 2 ปีที่แล้ว

      @@selfedu_rus Т.е. с токенами менее безопасный?

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

      @@Manu-ei6tn да

    • @Manu-ei6tn
      @Manu-ei6tn 2 ปีที่แล้ว

      @@selfedu_rus спасибо

  • @pavelgoogle7669
    @pavelgoogle7669 2 ปีที่แล้ว +2

    Будет ли урок по Аутентификации через соц сеть?

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

      Нет, этого не стал делать. Там нужно активно саму соц сеть юзать )

  • @Биба-ф8з
    @Биба-ф8з 2 ปีที่แล้ว +3

    Как реализовать сторону фронт энта?

  • @3bbiani
    @3bbiani 2 ปีที่แล้ว +1

    Подскажите, пожалуйста:
    1. а какая новая модель у нас здесь появилась на 4:48?
    2. не очень понятен плюс токенов в плане разных устройств. Мы всё равно вынуждены входить в систему на другом устройстве. Да, токен будет единым, но что это дает? Мы ведь, по идее, никакого состояния в токене не храним, куки отдельные будут на устройствах. В чем выгода?
    Ну и конечно уроки просто волшебные.
    Настоятельно рекомендую открыть возможность поддержки канала, почему до сих пор не открыли?

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

      Спасибо! Это не модель, а пакет djoser, который берет на себя работу с токенами в Django. Основное преимущество токенов - не нужно повторно вводить логин/пароль на другом устройстве, достаточно иметь токен. Прежний метод авторизации через куки и сессии привязывается к конкретному браузеру и с другого по любому нужно проходить процедуру ввода пароля заново.

    • @3bbiani
      @3bbiani 2 ปีที่แล้ว

      @@selfedu_rus Сергей, спасибо за ответ, но я изменил вопрос изначально, там 2 вопроса) что касается первого - я имел в виду, почему мы должны провести migrate, ведь в файле моделей у нас ничего не добавилось, и makemigrations мы не производили

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

      @@3bbiani в данном случае, наверное и не нужно было, я вроде по документации шел, а там так говорилось. Иногда токены хранятся на сервере в БД, иногда нет, разные бывают реализации.

  • @F_C_T_L
    @F_C_T_L ปีที่แล้ว +2

    А почему для logout используется POST запрос, а не запрос на удаление ?

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

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

    • @F_C_T_L
      @F_C_T_L ปีที่แล้ว +1

      @@selfedu_rus Понятно, большое спасибо!

  • @vestzeud2056
    @vestzeud2056 2 ปีที่แล้ว

    спасибо за труды! на 11:21 Headers(6) превращается в Headers(7). Непонятно, как это происходит. И список headers у меня иначе выглядит. Наверно, из-за более изменений в новой версии Postman?

    • @denis5232
      @denis5232 ปีที่แล้ว +1

      Да в новой версии постмена просто скрываются автозаголовки, там есть кнопка показать скрытые автозаголовки с картинкой глаза, если на нее нажать то отобразятся все заголовки.

  • @python_XVIII
    @python_XVIII 9 หลายเดือนก่อน +1

    помогите подалуйста у меня почему то когда в браузере нажимаю на logout переносит меня не понятно куда
    и ссылкак вроде работает

  • @qevinskvad9012
    @qevinskvad9012 ปีที่แล้ว +1

    djoser уже не поддерживаеться на новых версиях питоны и ДРФ

  • @donfedor007
    @donfedor007 2 ปีที่แล้ว +1

    Подскажите что за параметр form-data? В raw передать не выйдет? у меня не вышло(

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

      Я уже детали не помню, поэтому все эти вопросы лучше в сообществе телеграм-канала по Django спросить

    • @donfedor007
      @donfedor007 2 ปีที่แล้ว

      @@selfedu_rus это в Postman , там где параметры, заголовки, сырые данные.

    • @denis5232
      @denis5232 ปีที่แล้ว

      Мы можем использовать различные формы типов содержимого данных, определенные комитетом W3C. Они определили несколько форматов для отправки данных по сетевому уровню. К ним относятся данные форм, x-www-form-urlencoded и необработанные данные. По умолчанию мы можем отправлять данные в простом текстовом/ASCII-формате, используя формат x-www-form-urlencoded.
      Однако использование типа данных x-www-form-urlencoded имеет ограничение на объем данных. Таким образом, мы можем использовать form-data для отправки на сервер большого двоичного текста или текста, отличного от ASCII.
      Необработанный тип данных отправляет на сервер любой обычный текст или JSON, как следует из названия. Он поддерживает несколько типов контента, и Postman будет отправлять необработанные данные без каких-либо изменений, в отличие от других типов данных.
      Мы можем использовать необработанный тип данных для отправки любого типа данных в теле запроса. Это также включает в себя отправку функций Javascript, которые могут выполняться на стороне сервера. Мы можем отправить скрипты в опции Javascript. Необработанный тип данных также поддерживает языки разметки, такие как HTML и XML. Это может быть полезно, когда во внешнем интерфейсе нет логики и нам нужно использовать всю HTML/XML-страницу.
      Подробнее в оригинале: www.baeldung.com/postman-form-data-raw-x-www-form-urlencoded

  • @arseniynikonov8967
    @arseniynikonov8967 2 ปีที่แล้ว +1

    Здраствуйте, Сергей, спасибо вам за вашу работу, хотелось бы узнать как можно изменять данные на сайте в режиме реального времени без перезагрузки страницы с помощью Django и Rest, если это вообще возможно(лайки, отзывы, комментарии и тд.). Заранее спасибо

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว

      Если в браузере, то через JS, в других клиентах, в зависимости от способа взаимодействия, например, в смартфонах - это Java и приложение читает данные и меняет содержимое.

    • @arseniynikonov8967
      @arseniynikonov8967 2 ปีที่แล้ว

      @@selfedu_rus Ого, много учить придется) Спасибо за ответ

    • @ПавелРодионов-ш6б
      @ПавелРодионов-ш6б 2 ปีที่แล้ว

      @@arseniynikonov8967 А ты что фулстеком хочешь быть? Бэкенд разработчику это не нужно

    • @arseniynikonov8967
      @arseniynikonov8967 2 ปีที่แล้ว

      @@ПавелРодионов-ш6б ради интереса

  • @jackieuchiha7838
    @jackieuchiha7838 2 ปีที่แล้ว +3

  • @СаидЛутфуллин
    @СаидЛутфуллин ปีที่แล้ว

    Почему для разных устройств выделяется одинаковый токен?

  • @ivankurban669
    @ivankurban669 2 ปีที่แล้ว +1

    Те же сессии только, кроме браузера появились приложения.

  • @johnmazepa
    @johnmazepa 6 หลายเดือนก่อน

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

  • @viktorsokolov8153
    @viktorsokolov8153 2 ปีที่แล้ว +1

    полдня сижу с этим джосером, не хочет инсталится. Стэковерфло не помог.

  • @scorpion1995
    @scorpion1995 ปีที่แล้ว +1

    если не прописываешь authentication_classes = (TokenAuthentication, ) то Get-запрос у меня не выполняется, пробывал разные подходы, с Logout так ничего и не получилось, Login работает и отдает токен, а на выход нет, если у кого-то есть аргумент почему так происходит, буду благодарен за помощь

    • @scorpion1995
      @scorpion1995 ปีที่แล้ว

      class MyLogoutView(APIView):
      authentication_classes = (TokenAuthentication,)
      def post(self, request, format=None):
      # Удаление токена пользователя
      request.user.auth_token.delete()
      # Возвращаем успешный ответ
      return Response({"detail": "Logged out successfully."}) прописал дополнительный класс и следовательно маршрут к нему, тогда все успешно работает и токен удаляется

  • @sdv75
    @sdv75 2 ปีที่แล้ว

    Получается что создать пользователя может любой юзер отправив post запрос на /api/v1/auth/users/? Где тогда безопасность? Как этого избежать?

    • @selfedu_rus
      @selfedu_rus  2 ปีที่แล้ว +1

      да с токенами именно так, поэтому их лучше делать временными

  • @kolyanlock
    @kolyanlock ปีที่แล้ว

    Хотел попробовать TokenAuthentication но ошибся и прописал JWTAuthentication и создал пользователя. Потом изменил настройки и перезапустил сервер. Теперь не могу зайти и с самого начала в списке пользователей не отображался администратор. В административную панель заходит и видно 2 пользователя. Не знаю что делать :(

    • @kolyanlock
      @kolyanlock ปีที่แล้ว

      Удалил запись токена в таблице authtoken_token, попробовал создать токен в postman - никак выдавало ошибку. Зашёл в админку, создал токен там, после этого заработало, проверил, удалил токен и создал через postman удачно, пользователя администратора теперь тоже стало отображать. Каец, та ещё боль когда что-то перепутал, я уже думал всю базу драпать и по новой создавать

  • @meganfox54
    @meganfox54 2 ปีที่แล้ว +1

    Привет

  • @Sergey-cz7ym
    @Sergey-cz7ym ปีที่แล้ว

    Блин, читаю комментарии и моя самооценка падает ниже и ниже. Все всё понимают, как дважды-два, один я с трудом впитываю. Уроки интересные и понятные, но мне дается как то медленно этот дрф...

    • @Jason-lk6gb
      @Jason-lk6gb 6 หลายเดือนก่อน

      А мне наоборот. Ванильная Django со скрипом зашла, а DRF как по маслу. Как успехи сейчас?

    • @bernardsoul8936
      @bernardsoul8936 6 หลายเดือนก่อน

      @@Jason-lk6gb У меня наоборот Django нормально зашел😁 хотя вроде всё понимаю после django, но на некоторых моментах прям торможу. Еще работаю на drf 3.15.1 и django 5.0.4 из-за этого есть мелочи, которые не совпадают с тем, что показано в видео, приходится гуглить и chatgpt расспрашивать))

  • @h3ckphy246
    @h3ckphy246 2 ปีที่แล้ว

    УОТЬ ТЯКОЙ УОТЬ

  • @user-LvSerg777
    @user-LvSerg777 6 หลายเดือนก่อน +1

    10:24 не возвращает токен, вместо него ошибка "Operational Error at/auth/token/login/ - Exception Value: no such table: authtoken_token

    • @user-LvSerg777
      @user-LvSerg777 6 หลายเดือนก่อน

      Еще раз установил djoser - pip install djoser, потом ещё раз применил миграции - python manage. py migrate, теперь токен пришёл!

  • @___mann2281
    @___mann2281 2 ปีที่แล้ว +3

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