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

  Рет қаралды 44,407

selfedu

selfedu

2 жыл бұрын

Практический курс по Django: stepik.org/a/183363
Как работает авторизация и аутентификация по токенам и зачем это нужно. Реализация авторизации по токенам в DRF с помощью пакета Djoser.
Телеграм-канал: t.me/django_selfedu
Инфо-сайт: proproprogs.ru/django
drfsite-12.zip: github.com/selfedu-rus/rest-f...
Аутентификация: www.django-rest-framework.org...
Djoser: djoser.readthedocs.io/en/latest/

Пікірлер: 80
@mariyaalberdina9917
@mariyaalberdina9917 2 жыл бұрын
Большое спасибо за ваш труд, очень все понятно и хорошо изложено, а главное, много матриалов в плейлистах! С удовольствем с вами уже почти год)
@user-xv7sh6lp7o
@user-xv7sh6lp7o 2 жыл бұрын
Спасибо за подробное объяснение! 👍
@VikMoc
@VikMoc Жыл бұрын
Сергей, благодарю за плейлист!! Только полезная информация и отличная подача!!!
@eugene1965
@eugene1965 2 жыл бұрын
Уроки просто топ. Супер структурированный материал. Академическая подача. Лайки под каждым видео
@malyyigor34
@malyyigor34 Жыл бұрын
идеальное объяснение, спасибо!
@deni.01
@deni.01 Жыл бұрын
Изучаю сейчас эту тему, автор очень классно и понятно объясняет. Огромное спасибо за работу!
@meganfox54
@meganfox54 2 жыл бұрын
Спасибо отличные уроки токены
@svetlekanos9411
@svetlekanos9411 2 жыл бұрын
Посмотрела у разных авторов уроки на эту тему. У всех есть что-то своё. Однако Сергей именно учит и учит основательно, подробно объясняет, что откуда берётся. Спасибо огромное, Сергей!
@alexsukhykh5666
@alexsukhykh5666 2 жыл бұрын
Спасибо за уроки. Годнота))
@andredru4278
@andredru4278 9 ай бұрын
Спасибо. Отличная подача.
@iam_foreman
@iam_foreman Жыл бұрын
Сергей, спасибо Большое!
@nomadicus77
@nomadicus77 Жыл бұрын
Жесть конечно удивляюсь, как же этот человек скрупулезно подошёл к объяснениям всё настолько легко и понятно, даже моментами кажется, что ты спишь(каждый кто смотрит находится во сне) спасибо❤❤❤
@NickTyupin
@NickTyupin 2 жыл бұрын
Спасибо Сергей!
@user-uo4ut2du1z
@user-uo4ut2du1z 2 жыл бұрын
Топ контент, как и всегда)
@meganfox54
@meganfox54 2 жыл бұрын
Лучшие уроки самыетточныетджанго токены
@mikhailtochenov981
@mikhailtochenov981 2 жыл бұрын
Отлично, спасибо
@viacheslavshambazov7445
@viacheslavshambazov7445 2 жыл бұрын
Спасибо большое.
@hovosimonyan799
@hovosimonyan799 2 жыл бұрын
Спасибо
@alexseydugin8109
@alexseydugin8109 Жыл бұрын
От себя бы добавил, необходимость отправки каждый раз токена обусловлена тем что один из принципов Rest это отсутсвие состояние, поэтому это забота клиента всегда отправлять данные что бы его опознали
@ibrahimoglu
@ibrahimoglu 2 жыл бұрын
👍
@sergeygrigoryan4081
@sergeygrigoryan4081 Жыл бұрын
Спасибо большое за уроки Сергей вы топ, я уже в программирование 5 лет и изучаю джанго только у вас в канале, но у меня есть такой вопрос какой именно viewset использовать для сложных задач мне это не понятно стало 😅
@user-kh8mf8zc3u
@user-kh8mf8zc3u Жыл бұрын
Спасибо за огромный труд ! Вопрос: когда мы вводи имя и пароль для входа, мы проходим аутентификацию, и если мы ее прошли, нам сервер дает токен или сессион айди, и дальше , при выполнении каких либо действий на сайте, сервер проверяет наши права доступа (проверяет авторизованы ли мы для этих действий), с помощью токена или сессион айди и ранее прописанных пермишенов , правильно ?
@___mann2281
@___mann2281 Жыл бұрын
есть ли принципиальное отличие от встроенных сессий? ведь можно авторизовываться просто указвая в куки sessionid
@user-ky7ij4lf9c
@user-ky7ij4lf9c 2 жыл бұрын
Очень все доступно и понятно, а будут ли уроки по ролям пользователя?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
ну там все предельно просто, создаем свой пермишн и проверяем нужные роли (как создавать перминины мы говорили)
@ChelovekPavuk555
@ChelovekPavuk555 Ай бұрын
Часто вижу в чатах что все используют JWT или DJOSER капаются там ошибки кидают, а что дефолтный джанговский токен так плох почему все идут к сторонним библиотекам ?
@python_XVIII
@python_XVIII 6 ай бұрын
помогите подалуйста у меня почему то когда в браузере нажимаю на logout переносит меня не понятно куда и ссылкак вроде работает
@zhop2062
@zhop2062 8 ай бұрын
Спасибо большое за уроки! Может кто знает почему может не отображаться в правом верхнем углу имя пользователя? В шапке страницы: слева Django rest framework, а справа Root. Вот этот root у меня почему-то не отображается и все время написано Authentication credentials were not provided :(
@kolyanlock
@kolyanlock Жыл бұрын
А в документации где про строку в INSTALLED_APPS rest_framework.authtoken? Если следовать документации, как я должен был об этом догадаться?
@user-kk6wr7nc9f
@user-kk6wr7nc9f 2 жыл бұрын
Как реализовать сторону фронт энта?
@andrewharazdowskyy4771
@andrewharazdowskyy4771 2 жыл бұрын
Уважаемый Сергей! Огромная благодарность за Ваше изложение этой очень интересной и практически полезной для меня темы. Понимаю, что "многознание порождает печаль" .) а учится надо самостоятельно, но после Вашего занятия - как в пословице "вкус приходит во время еды" - очень хочется задать в развитие темы вопросы. Буду благодарен за ответы "да-нет-не знаю" - но хочу не ошибиться в дальнейшем пути изучения. 1. Если User A входит в систему по токенам с различных устройств X, Y, Z - для него будет сгенерирован один токен или Три разных. 2. Часто в работе встречаюсь с подходом, когда, покупая аккаунт - пользоваться этим аккаунтом можно с определенного количества устройств... Мечтаю решить аналогичную задачу - ограничить для зарегистрированного пользователя количество одновременных подключений к ресурсу. Может ли, по Вашему мнению, прийти на помощь механизм авторизации и аутентификации по токенам? или нужен другой подход? В фильме "Операция Ы..." есть фраза - "... огласите пожалуйста весь список" )... но понимая Вашу занятость - может кто-то прочитавший - поделится опытом, или направит по нужному пути. Спасибо!
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Спасибо! По вопросам: 1. Если используется один и тот же токен для идентификации, то ему ничего генерироваться не будет (вне зависимости от устройств). Новый токен создается в процессе авторизации. (Так по классике, хотя, поведение всегда можно изменить). 2. Одновременные подключения или максимальное число разных типов устройств? Разные немного вещи. По числу одновременных подключений к серверу, насколько я знаю, настраивается на самом Веб-сервере, а с числом типов устройств, честно говоря, не сталкивался. Спросите в телеграм-канале, думаю, много интересного подскажут.
@unaibekovbakhyt6517
@unaibekovbakhyt6517 2 жыл бұрын
Хотел сына по вашим урокам помочь войти в мир айти. Можете ли расписать пункты плейлистов, для веб разработки на пайтон. В каком порядке учить? Спасибо за уроки
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Смотря что нужно. Если с нуля, пусть начнет с Питона, затем ООП. Если желание не пропадет, то HTML+CSS, JavaScript. Если и после этого не пропадет, то фреймворки Django + DRF, Agular, React и т.п.
@SergeiStukun
@SergeiStukun Жыл бұрын
Спасибо за урок) У меня вопрос. Если мы авторизуемся сначала через браузер, а потом решим зайти на сайт через телефон, то как приложение в телефоне поймет какой токен отправлять в запросе на сервер? Ведь токен был присвоен при первой авторизации через браузер ПК, и хранится соответственно там же в локальном хранилище
@selfedu_rus
@selfedu_rus Жыл бұрын
это вам лучше спросить у сообщества в телеграм-канале по Django, ссылка или под видео, либо в описании канала.
@vestzeud2056
@vestzeud2056 Жыл бұрын
спасибо за труды! на 11:21 Headers(6) превращается в Headers(7). Непонятно, как это происходит. И список headers у меня иначе выглядит. Наверно, из-за более изменений в новой версии Postman?
@denis5232
@denis5232 Жыл бұрын
Да в новой версии постмена просто скрываются автозаголовки, там есть кнопка показать скрытые автозаголовки с картинкой глаза, если на нее нажать то отобразятся все заголовки.
@qevinskvad9012
@qevinskvad9012 Жыл бұрын
djoser уже не поддерживаеться на новых версиях питоны и ДРФ
@user-zp4gq1nc6o
@user-zp4gq1nc6o 2 жыл бұрын
Чем токены отличаются от кук? И там и там после авторизации в каждом запросе в заголовке нужно указывать, так сказать, "ключ". и там и там он уничтожается после лог аута.
@selfedu_rus
@selfedu_rus 2 жыл бұрын
С куками идет дополнительная проверка откуда они были переданы. Должен быть тот же браузер (тот же юзер). С токенами такой проверки не проводят, просто по факту, пришел, хорошо, не пришел, доступа нет.
@Manu-ei6tn
@Manu-ei6tn 2 жыл бұрын
@@selfedu_rus Т.е. с токенами менее безопасный?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@Manu-ei6tn да
@Manu-ei6tn
@Manu-ei6tn 2 жыл бұрын
@@selfedu_rus спасибо
@user-dj1lf3vw7r
@user-dj1lf3vw7r Жыл бұрын
Почему для разных устройств выделяется одинаковый токен?
@viktorsokolov8153
@viktorsokolov8153 2 жыл бұрын
полдня сижу с этим джосером, не хочет инсталится. Стэковерфло не помог.
@donfedor007
@donfedor007 Жыл бұрын
Подскажите что за параметр form-data? В raw передать не выйдет? у меня не вышло(
@selfedu_rus
@selfedu_rus Жыл бұрын
Я уже детали не помню, поэтому все эти вопросы лучше в сообществе телеграм-канала по Django спросить
@donfedor007
@donfedor007 Жыл бұрын
@@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
@ivankurban669
@ivankurban669 2 жыл бұрын
Те же сессии только, кроме браузера появились приложения.
@jackieuchiha7838
@jackieuchiha7838 2 жыл бұрын
@sdv75
@sdv75 2 жыл бұрын
Получается что создать пользователя может любой юзер отправив post запрос на /api/v1/auth/users/? Где тогда безопасность? Как этого избежать?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
да с токенами именно так, поэтому их лучше делать временными
@pavelgoogle7669
@pavelgoogle7669 2 жыл бұрын
Будет ли урок по Аутентификации через соц сеть?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Нет, этого не стал делать. Там нужно активно саму соц сеть юзать )
@F_C_T_L
@F_C_T_L Жыл бұрын
А почему для logout используется POST запрос, а не запрос на удаление ?
@selfedu_rus
@selfedu_rus Жыл бұрын
удаление обычно связано с удалением какой-либо информации, выход пользователя (logout) все же не удаление как таковое, а изменение состояния
@F_C_T_L
@F_C_T_L Жыл бұрын
@@selfedu_rus Понятно, большое спасибо!
@johnmazepa
@johnmazepa 2 ай бұрын
залогинился я с компьютера. сервер сгенерировал для меня токен, мой браузер его сохранил. теперь я могу логиниться с любого другого устройства при помощи этого токена. но как этот же токен попадает на мой, например, телефон?
@scorpion1995
@scorpion1995 Жыл бұрын
если не прописываешь 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."}) прописал дополнительный класс и следовательно маршрут к нему, тогда все успешно работает и токен удаляется
@kolyanlock
@kolyanlock Жыл бұрын
Хотел попробовать TokenAuthentication но ошибся и прописал JWTAuthentication и создал пользователя. Потом изменил настройки и перезапустил сервер. Теперь не могу зайти и с самого начала в списке пользователей не отображался администратор. В административную панель заходит и видно 2 пользователя. Не знаю что делать :(
@kolyanlock
@kolyanlock Жыл бұрын
Удалил запись токена в таблице authtoken_token, попробовал создать токен в postman - никак выдавало ошибку. Зашёл в админку, создал токен там, после этого заработало, проверил, удалил токен и создал через postman удачно, пользователя администратора теперь тоже стало отображать. Каец, та ещё боль когда что-то перепутал, я уже думал всю базу драпать и по новой создавать
@arseniynikonov8967
@arseniynikonov8967 2 жыл бұрын
Здраствуйте, Сергей, спасибо вам за вашу работу, хотелось бы узнать как можно изменять данные на сайте в режиме реального времени без перезагрузки страницы с помощью Django и Rest, если это вообще возможно(лайки, отзывы, комментарии и тд.). Заранее спасибо
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Если в браузере, то через JS, в других клиентах, в зависимости от способа взаимодействия, например, в смартфонах - это Java и приложение читает данные и меняет содержимое.
@arseniynikonov8967
@arseniynikonov8967 2 жыл бұрын
@@selfedu_rus Ого, много учить придется) Спасибо за ответ
@user-sk9se5be9g
@user-sk9se5be9g 2 жыл бұрын
@@arseniynikonov8967 А ты что фулстеком хочешь быть? Бэкенд разработчику это не нужно
@arseniynikonov8967
@arseniynikonov8967 2 жыл бұрын
@@user-sk9se5be9g ради интереса
@3bbiani
@3bbiani 2 жыл бұрын
Подскажите, пожалуйста: 1. а какая новая модель у нас здесь появилась на 4:48? 2. не очень понятен плюс токенов в плане разных устройств. Мы всё равно вынуждены входить в систему на другом устройстве. Да, токен будет единым, но что это дает? Мы ведь, по идее, никакого состояния в токене не храним, куки отдельные будут на устройствах. В чем выгода? Ну и конечно уроки просто волшебные. Настоятельно рекомендую открыть возможность поддержки канала, почему до сих пор не открыли?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Спасибо! Это не модель, а пакет djoser, который берет на себя работу с токенами в Django. Основное преимущество токенов - не нужно повторно вводить логин/пароль на другом устройстве, достаточно иметь токен. Прежний метод авторизации через куки и сессии привязывается к конкретному браузеру и с другого по любому нужно проходить процедуру ввода пароля заново.
@3bbiani
@3bbiani 2 жыл бұрын
@@selfedu_rus Сергей, спасибо за ответ, но я изменил вопрос изначально, там 2 вопроса) что касается первого - я имел в виду, почему мы должны провести migrate, ведь в файле моделей у нас ничего не добавилось, и makemigrations мы не производили
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@3bbiani в данном случае, наверное и не нужно было, я вроде по документации шел, а там так говорилось. Иногда токены хранятся на сервере в БД, иногда нет, разные бывают реализации.
@meganfox54
@meganfox54 2 жыл бұрын
Привет
@Sergey-cz7ym
@Sergey-cz7ym Жыл бұрын
Блин, читаю комментарии и моя самооценка падает ниже и ниже. Все всё понимают, как дважды-два, один я с трудом впитываю. Уроки интересные и понятные, но мне дается как то медленно этот дрф...
@Jason-lk6gb
@Jason-lk6gb 3 ай бұрын
А мне наоборот. Ванильная Django со скрипом зашла, а DRF как по маслу. Как успехи сейчас?
@bernardsoul8936
@bernardsoul8936 3 ай бұрын
@@Jason-lk6gb У меня наоборот Django нормально зашел😁 хотя вроде всё понимаю после django, но на некоторых моментах прям торможу. Еще работаю на drf 3.15.1 и django 5.0.4 из-за этого есть мелочи, которые не совпадают с тем, что показано в видео, приходится гуглить и chatgpt расспрашивать))
@h3ckphy246
@h3ckphy246 Жыл бұрын
УОТЬ ТЯКОЙ УОТЬ
@user-LvSerg777
@user-LvSerg777 3 ай бұрын
10:24 не возвращает токен, вместо него ошибка "Operational Error at/auth/token/login/ - Exception Value: no such table: authtoken_token
@user-LvSerg777
@user-LvSerg777 3 ай бұрын
Еще раз установил djoser - pip install djoser, потом ещё раз применил миграции - python manage. py migrate, теперь токен пришёл!
Can You Draw A PERFECTLY Dotted Line?
00:55
Stokes Twins
Рет қаралды 99 МЛН
When You Get Ran Over By A Car...
00:15
Jojo Sim
Рет қаралды 18 МЛН
ОСКАР vs БАДАБУМЧИК БОЙ!  УВЕЗЛИ на СКОРОЙ!
13:45
Бадабумчик
Рет қаралды 3,4 МЛН
Django REST Framework - создаем API для сайта
21:17
Дед погроммист
Рет қаралды 16 М.