FastAPI среща Google Authentication
Кристиян Ташев (Трейнър; софтуерен инженер)
Семинар за интегриране на Google authentication в backend приложение на Python с FastAPI, включително какво представлява FastAPI, ролята на бисквитките и разликата между автентикация и авторизация. Втората част е демо от нулата на минималистичен проект — създаване на OAuth client ID за web приложение в Google и настройване на authorized redirect (callback) URL.
Описание
Тема: FastAPI среща Google Authentication
Трейнър: Кристиян Ташев
Дата: 09.07.2024
Научете повече за Software University: http://softuni.bg.
Следете за нашите курсове, семинари и обучения във Facebook: http://fb.com/SoftwareUniversity
Описанието е на Software University (SoftUni).
Препис
Автоматичен препис — може да съдържа грешки — сверявайте с видеото, преди да цитирате.
Клик върху времето пуска видеото от този момент.
↗здравейте на всички
↗а ще започна оттам първо да се представя
↗кой съм аз с какво се занимавам и и така
Покажи целия препис — още 1504 абзаца (~8021 думи)
↗нататък съвсем накратко аз съм кристиян
↗ташев днес аз ще водя този кратък
↗семинар
↗а този семинар ще е свързан с изцяло с
↗python по-конкретно fast api защо fast
↗api защото fast api е супер кул поне
↗според мене а кой съм аз
↗а аз работя в софтуерна компания вече
↗може би да кажем около пеше седем години
↗като към днешна дата съм софтуерен
↗инженер там занимавам се основно с
↗python преди това съм се занимавал
↗изцяло с
↗а c shar тоест завършил съм академия
↗със csp след това се преквалифицирах към
↗python по-интересно за мен е че съм
↗водил многократно
↗лекции на на съвсем различни теми тоест
↗водил съм
↗лекции на тема примерно
↗а тестинг водил съм лекции които са били
↗лекции за
↗а chat gpt и така нататък съвсем
↗накратко това е за мен да знаете кой
↗какво ще ви представи днес а днешната
↗лекция е точно това днешната лекция е
↗fast api среща google
↗authentication защо избрах точно тази
↗лекция защото
↗а когато комуникирам с различни
↗девелопъри разбирам и а тоест усещам че
↗те имат супер много затруднения точно да
↗да а направят някаква интеграция с
↗google authentication тук говорим изцяло
↗за backend девелопъри защото знаем че
↗във фронтенда е малко
↗по-различно днешната адженда е а първо
↗ще си поговорим какво е fast api след
↗това какво са
↗кукита след това какво е аутентикация
↗какво е ауторизация тъй като има супер
↗много объркване точно по тази тема много
↗хора смятат че аутентикация и
↗авторизация е едно и също което реално
↗не е така
↗а след това защо избрах точно google
↗автентикацията ще си поговорим малко и
↗след това ще имаме едно кратко демо
↗кратко демо а демото какво ще
↗представлява демото ще представлява
↗наистина много минималистичен проект на
↗fast api с google аутентикация from
↗scratch имайте м предвид сега тук нещо
↗много важно че в демото няма да спазваме
↗абсолютно всички без практис за
↗структури на проекти и така така нататък
↗ще се опитаме да го направим възможно
↗най-минималистичната
↗да се създаде fast api е създаден съвсем
↗наскоро това е рейк за python който е
↗изцяло backend framework а той е
↗създаден от нло а през 2018 година
↗причината да го създаде е че преди това
↗той е работил супер много с jango който
↗е страхотен фрейър не ме разбирайте
↗погрешно но джан със себе си носи супер
↗много
↗а неща които не винаги са ни изцяло
↗нужни и това е причината да се създаде а
↗fast api fast api е на четвърто място а
↗сред всички бен ремъци а като към днешна
↗дата може би не към днешна към вчерашна
↗дата в
↗github имаше 73 000 и
↗300 звезди което е супер много като
↗трябва да вземете в предвид че тук като
↗казвам че е на четвърто място имам
↗предвид под всички
↗програмни езици не говоря само за python
↗разбира се на първо място е джато който
↗jango а има 78 000 звезди което е не чак
↗много повече спрямо fast api но тук
↗трябва да имате нещо на предвид че fast
↗api е наистина супер а скорошен фрейър
↗който е едва на ст години а
↗джато е създадено 2005
↗година което какво ни казва че fast api
↗се представя страхотно в последните
↗години защо защо избрах fast api защото
↗fast api е супер бърз какво го прави
↗бърз бърз го прави това че в него може
↗без проблем както и ще видите в демото
↗да се правят асинхронни заявки това е
↗много ключово тъй като всички знаем че
↗към днешна дата в python world така
↗казано а асинхронни заявки не се случва
↗чак толкова лесно ако мога така да кажа
↗съответно а fast api го предоставя това
↗изцяло on the fly супер лесен е за
↗ползване ще видите че буквално се сепва
↗за броени секунди не е нужно нещо
↗допълнително също така получаваме
↗изцялото тична документация какво имам
↗предвид тук под документация тук става
↗въпрос за swag страници dogs и така
↗нататък тъй като знаем че когато ние
↗като back
↗девелопъри е супер ако предоставим
↗такава документация
↗на frontend девелопърите съответно ете
↗могат да тестват в горе-долу изолирана
↗среда също така под докумен си има
↗и нещо друго на на предвид и това е че
↗fast api ако
↗отворите тяхното ре можете да видите че
↗там има абсолютно всичко те имат
↗страхотен сайт документацията е модерно
↗направена и така нататък казах и
↗асинхронност вече го споменах
↗а асинхронност нека пак да повторя знаем
↗че в python world ситуацията с
↗асинхронността не е чак толкова
↗лесна и не на последно място
↗а fast api има страхотна интеграция с
↗pantic ако някой от вас не е запознат
↗какво е патик пай данк е точно една
↗друга библиотека която подпомага
↗валидирането на данните тоест като
↗казвам данни тук имам предвид на
↗структурите от данни в python не някакви
↗input и output
↗файлове трябва това трябва да се има на
↗предвид тъй като знаем че python не е
↗чак толкова стро типизиран език както да
↗кажем примерно java или
↗csp нещата се случват малко по-различно
↗и съвсем накратко защо fast api защото
↗просто е бърз нещата се случват
↗светкавично бързо при
↗него извинете ме да си поговорим сега
↗какво са кукитата кукитата са много
↗малки текстови документчета файлчета
↗които се пазят на клиента какво имам
↗предвид под клиента сега не знам
↗аудиторията колко е запозната със сървър
↗и клиент тук под клиент се има на
↗предвид всеки един браузър който
↗ползваме като това може да е chrome ed и
↗така
↗нататък кукитата могат да бъдат няколко
↗вида в повечето случаи те са сесийни
↗кукита или постоянни кукита в идеалния
↗случай те са сесийни кукита тоест в тях
↗запазваме някаква информация която е за
↗текущата сесия тоест за текущия момент в
↗който ние работим и правим нещо с
↗определената апликация която е
↗създадена за какво друго могат да ни
↗служат кукитата за аутентикация разбира
↗се автентикацията е много ключово нещо
↗когато се опитваме да защитим нашите
↗сървъри по една или по друга форма
↗абсолютно винаги когато се опитваме да
↗направим нещо трябва да знаем кои сме
↗какво искаме какво правим и така нататък
↗тоест трябва да предоставяме
↗на клиентите ни
↗нужната
↗информация за да знае докъде има достъп
↗до нашия сървър нашата
↗а нашата апликация в кукитата интересно
↗нещо е че мога да се персонализира
↗информация какво имам предвид тук под
↗персонализиране и точно тук а става
↗въпрос за постоянните кукита представете
↗си че имате един уебсайт който може да
↗има светла може да има тъмна тема а може
↗да има м подреждане на някакви филтри
↗или сърч полета които са вътре тази
↗цялата информация може да се запази в
↗кукитата съвсем накратко кукитата са
↗навсякъде дори в към днешна дата ако
↗застанем заставам отварям примерно сайта
↗на софтуни
↗не знам защо ми излезна
↗а vuejs но отваряме сайта на soft
↗натискаме десен бутон отиваме в
↗апликации и виждаме че веднага сме
↗получили две кита едното ни е session id
↗другото ни е език който който език по by
↗default
↗е by default е български най-вероятно
↗това е постоянно куки което стои тук и
↗можем да си сепваме всеки път езикът за
↗този определен
↗уебсайт извинявам
↗се не очаквах че ще се върнем
↗е каква ни е крайната цел да направим
↗fast api cooky monster тоест да може
↗fast api да работи спокойно и вие да
↗работите спокойно извинявам се
↗да работите спокойно с кукита навсякъде
↗да създавате да триете да добавяте и
↗така
↗нататък да отидем и да видим какво е
↗автентикацията тъй като малко по-рано
↗споменах че има едно такова объркване
↗ако мога така да кажа сред хората каква
↗е разликата между атен акация и
↗оторизация
↗автентикацията съвсем накратко съм
↗подготвила едно страхотно меме за вас е
↗кой си ти какво
↗искаш тоест автентикацията предоставя
↗информация на нашия сървър кои сме ние а
↗като тази информация може да е имена
↗може да е телефон може да е имейл адрес
↗и така нататък а ауторизацията от своя
↗страна е мога ли да погледна някъде
↗тоест мога ли да имам достъп до някаква
↗част в нашия сървър като тази част може
↗да да е конкретен endpoint конкретен
↗пейдж или нещо от този сорт а знаете че
↗когато се създават апликации в повечето
↗случаи има админ page съответно точно
↗там е моментът на оторизацията
↗само админите които отново са юзъри имат
↗достъп до този админ
↗пейдж защо избрах google автентикация
↗аа
↗защото нека пак да
↗отворя google и ако отново ще ползвам за
↗пример сайта на
↗soft ако влезем в soft виждате ето тук
↗долу има едно бутонче google което
↗бутонче google какво означава означава
↗че ние можем да се логнем с google което
↗означава че не е нужно да имаме
↗допълнителна а допълнителна регистрация
↗да правим също така виждате че аз съм
↗създал няколко мемета ако отидем в меме
↗генератор първият който
↗намерим не даваме никакво съгласие
↗отиваме в логин и отново виждате че ето
↗тук отново има бутон
↗което е за google аутентикация точно
↗това е причината да изберем да избера
↗google аутентикация защото тя просто е
↗навсякъде в абсолютно всеки един сайт
↗модерен сайт можете да се автентикиран
↗с google тоест единственото което ви е
↗нужно да имате един
↗gmail натискате бутона и вие вече сте
↗автентикиран с google
↗нека сега да преминем към демото имайте
↗предвид че демото
↗а ще тоест подготвил съм съвсем мъничка
↗структура на проект
↗а това тук са git ign
↗и допълнителни файлове които е просто да
↗си сетъп на средата но имаме два три
↗файла в които три файла ще създадем
↗нашата апликация след това ще отидем в
↗google конзолата ще си създадем
↗ключовете и ще ви ще видите как всичко
↗това работи
↗заедно само
↗секунда първо да започнем оттам че за
↗fast api ни трябва просто да напишем
↗fast
↗api
↗[музика]
↗докумен отваряме fast api и ето тук я
↗има цялата информация за целия фрейм
↗уърк и ще видите абсолютно по-голямата
↗част от нещата които правим ще ги видите
↗тук как започва всеки един fast api
↗application той винаги започва с това да
↗се създаде нашия
↗апликейшън като конвенция въ fast api е
↗нашият application да се казва app който
↗е application само че а е хубаво да пише
↗на правилното място затварям си малко
↗нещата съответно създаваме си един app
↗който както можете се досетите се
↗казва fast
↗api като тук заставате и си добавяте
↗ир вече имаме готов application fast api
↗другото основно нещо което трябва да
↗направите само секунда тъй като имам
↗ключен койт
↗и се опитвам да го
↗изключа аха
↗аха
↗l супер така да не ни а разсейва
↗копай съответно имаме си
↗а вече създадения така казано
↗application след това какво правя аз
↗стандартно е винаги си казвам че ако
↗това ми е не
↗файла аз заставам и мога да ръна
↗апликацията
↗оттука това става със
↗стандартната name if name е равно на
↗main съответно за да можем да стартираме
↗всеки един fast api application на нас
↗ни е нужно да имаме ovc съответно си
↗добавяме
↗uic който става директно в импорти ир
↗uic
↗супер
↗създаваме казваме uic казваме му точка
↗има run нещо много готино след това
↗трябва да подадем кой апликейшън искаме
↗да стартираме съответно искаме да
↗подадем на кой порт да го стартираме в
↗случая тъй като аз съм в linux subsystem
↗ще използвам
↗127.01 съответно е много препоръчително
↗не е задължително но е препоръчително да
↗подадем и порта който е в случая аз ще
↗използвам
↗8000 супер следващото нещо което аз
↗всеки път когато създавам някакви fast
↗api
↗апликации правя е заставам казвам а
↗точка и почвам да създавам ратри които
↗искам да имам съответно първият ще ми е
↗get както казахме ние ще правим google
↗аутентикация съответно
↗ползвам името гин и забележете започвам
↗да правя
↗асинхронни
↗асинхронни
↗методи да подавам името на метода който
↗еги
↗или r както предпочитате и след това
↗просто пишем нашата логика какво правя
↗аз в повечето случаи предпочитам когато
↗се създават fast api апликации за мен е
↗много важно когато застана и погледна
↗ентите те да са възможно
↗най-малки
↗най-лесно най-лесни за четене съответно
↗да мога с един поглед да видя абсолютно
↗всичко съответно какво ще направя аз ще
↗кажа a и ще си направя един логин този
↗логин веднага мога да го
↗създам
↗в google aut
↗така само моя грешка извинявам се
↗и l съответно за момента казвам че това
↗ще е празен метод след мъничко ще ги
↗разписвам съответно какво правя добавям
↗си логина следващото нещо което е важно
↗когато правим каквато и да е
↗аутентикация
↗е важно да имаме callback какво
↗представлява
↗колбек представете си че вие искате
↗информация от даден сървър съответно
↗този
↗сървър изпраща отново куст към ваш
↗endpoint какво означава това ние когато
↗а поискаме аутентикация или някакъв
↗токън от google ние трябва да му
↗предоставим нашия endpoint към който той
↗да се обърне и да да ни даде нужната
↗информация тоест къде да ни върне нашия
↗толк като този а този
↗раут отново е
↗aut и стандартно си го кръщавам аз call
↗back така кръщаваме си го callback
↗съответно както видяхте
↗заставам давам му име
↗out и отново си
↗създавам директно
↗връщам и този out call отново отивам в
↗google оставиме asing
↗def даваме
↗името и даваме пас след мъничко ще ги
↗имплементираме и точно тези ен пойти
↗имайте предвид че тук сега има нещо
↗много важно което не трябва да
↗пропускаме когато получаваме колбек
↗абсолютно винаги ние трябва да получим
↗рикуеста тоест рикуеста откъде е дошъл
↗а този колбек съответно как се случват
↗нещата във fast api пишеме си даваме си
↗име на
↗променлива и съответно този както казах
↗по-рано f api работи супер с типова от
↗данни и
↗е аз препоръчвам
↗да казвате какъв тип са тези
↗данни в случая ще
↗кажем този куст а може да е от или от
↗starlet или от fast api имайте предвид
↗че рекуести в fast api той е изцяло
↗базиран на starlet така че в случая аз
↗ще използвам
↗starlet съответно за да можем да
↗направим демото по
↗а та да кажа по-реалистично ще ни трябва
↗и да имаме така казано един
↗секнат end който ще е
↗про и този protected отново ще
↗е
↗[музика]
↗protected
↗r който ще трябва да
↗получаваме информация да кажем за
↗текущия user както казах няма да правим
↗прекалено сложна апликация ще направим
↗изцяло базова апликация просто да видим
↗как работят нещата и какво е нужно да
↗направим съответно давам си име на
↗променливата current user който current
↗user ще
↗нва това отново е клас в
↗а fast api който ще нва на някакъв метод
↗който ние ще създадем а
↗да кажем че той ще
↗е c user примерно нещо от този
↗сорт съответно какво правим отново
↗правим и тук си правим един
↗c
↗user супер този cent user както знаете
↗щом имаме сесия щом имаме различни
↗кусти на нас ни е нужно тоест на нас ни
↗е нужно да знаем точно от кой куст
↗откъде е дошло това цялото нещо
↗съответно ето тук ще направим един куст
↗две точки
↗request ще си го и почнем отново това
↗цялото нещо както казахме ползваме
↗нещата от starlet и след мъничко ще
↗започнем да имплементираме всички тези
↗метод които сме създали към този момент
↗съответно а само поглед но как ми се
↗казваше метода current user нека да
↗бъде get current user супер така
↗подаваме си нашия get current user на
↗нашия
↗метод
↗и просто ще върнем информацията
↗r за кън
↗юзъра тоест какво ще направя тук ту ще
↗си сложа една документаци ика да не
↗забравя след мъничко а
↗[аплодисменти]
↗супер какво имаме към този момент имаме
↗съвсем базова логика която ни създаде
↗няколко раут които не са извикват в себе
↗си няколко метода
↗и можем да се логнем на теория все още
↗не можем можем да получим тоя укн на
↗теория все още не можем и имаме
↗protected
↗ъри съответно щом можем да сепваме и да
↗правим някакви неща нека да имаме един
↗endpoint който да е просто
↗а имайте м предвид че правя просто get
↗по-лесно е за обяснение поне според мен
↗а тук имаме non
↗protected който този м protected sing
↗dev
↗само да смъкнем малко тази конзолка
↗така тук просто ще
↗върнем един
↗ли и тук ще
↗[музика]
↗имаме супер така
↗можем да се логнем можем да си вземем
↗къна можем да проверим дали сме
↗автентикиран или не както трябва а можем
↗да извършваме действия ако не сме
↗автентикиран
↗остана ни и само му да можем да се
↗гаутмрт ще ни
↗е съответно
↗гау супер
↗в този logout
↗отново log
↗r който щене информацията
↗от супер както казахме отиваме в google
↗aut и си правим
↗[музика]
↗един df
↗co и отново пасваме само че това защо ни
↗няма няма
↗usage все още не знаем защо няма us
↗добре отиваме импортва
↗сита и имаме абсолютно всичко сега ако
↗застанете и просто стартирате
↗апликацията има имам предвид че
↗към текущия момент все още не сме
↗имплементирали нищо но ако отидем в
↗local host въ fast api ключовото е че
↗сла страниците не са в наклонена черта
↗сгр това може да бъде конфигурирано но
↗те са в наклонена черта dox и виждате че
↗супер бързо без абсолютно никакви усилия
↗само тук съм забравил една наклонена
↗черта супер бързо без абсолютно никакви
↗усилия ние имаме вече създадени пет
↗нпота и те
↗работят точно това е причината защо fast
↗api се използва масово и набира такава
↗скорост видяхте че буквално какво
↗направих създадох си едно файлче в в
↗което нека да минем отново ключовите
↗неща които съм направил е създал съм
↗казал съм че това е fast api апликация
↗създал съм 1 2 3 4 пе раут и съм казал
↗просто тази апликация да се ръна и аз
↗имам готов работещ
↗бекенд и мога да правя съвсем различни
↗неща така да продължим аа откъде ще
↗продължим нека да бъде директно с google
↗автентикацията първо ще имплементираме
↗абсолютно всичко а след това ще застана
↗и ще конфигурирам в google cloud
↗конзолата това което е нужно за да може
↗наистина нашия апликейшън да работи с
↗реални
↗данни какво трябва да
↗направим нашият логин има нещо много
↗важно трябва да подадем към
↗google да направим куст директно към
↗google извинявам
↗се какво представлява този куст аз си
↗правя една променлива google out url
↗който този out url и сега тука е
↗ключовото на нещата които трябва да
↗съдържа малко е грозно цялото нещо но но
↗имаме
↗https просто съм писал прекалено много
↗аутентикация и затова горедолу ги знам
↗нещата на изс ако не проработи ще ме
↗извините ще проверим в интернет точно
↗как са лите та имаме а https имаме acc
↗accounts имаме
↗google.com след това имаме all имаме o
↗out o out д защото всичките ни
↗аутентикация които ще правим са с o
↗2 версия втора и казваме че искаме да се
↗автентикиран
↗какво е това
↗мястото където ще искаме информация
↗каква информация и за какво версия 2 е
↗горе-долу новичка версия ако мога така
↗да каже
↗съответно след това продължаваме а
↗трябва да кажем какво какъв респонс type
↗искаме съответно пишем resp type имайте
↗и предвид че това е нещото което на мен
↗не ми допада и абсолютно винаги съм го
↗казвал на хора с които съм работил не ми
↗харесва да се работи със стрингове
↗защото в момента виждате пише някакъв
↗много дълъг стринг
↗и ако допусна някакво малко тапо след
↗това това цялото нещо няма дебъгване
↗няма откриване та да се надяваме че няма
↗да има проблем казваме че типът който
↗искаме е resp type код след това казваме
↗cli id което ще трябва да си го вземем
↗от
↗google за момента тук ще
↗сложа
↗дами съответно като имаме client id то
↗друга допълнителна информация в кото
↗която трябва проде да подадем е
↗red url съответно този red url
↗опс отново към текущия момент ще го
↗оставя дами и последното нещо което
↗искаме е каква информация искаме за този
↗user
↗а тоест ние от google можем не само да
↗взимаме имейл адрес имена телефонни
↗номера има и сензитивна
↗информация
↗но за примера който правим в момента ние
↗няма да ползваме никаква сензитивна
↗информация причината за това е че когато
↗ползваме малко по-сензитивни информация
↗от google ни трябва да нашия апликейшън
↗да бъде верифициран от google което
↗какво означава трябва да се подаде куест
↗да се изчака малко малко в зависимост от
↗времето на одобрение което може да
↗варира от три дни доколкото знам до
↗няколко месеца затова ние ползваме
↗най-базовата а аутентикация
↗тоест най-базовата информация а без
↗абсолютно никаква сензитивна информация
↗която ще е в scope този scope
↗е open id
↗съответно в това open id ние имаме
↗имей
↗и
↗имаме това тук е
↗space просто кое параметрите са така
↗искаме имейл и искаме профил което какво
↗означава искаме да знаем имейла искаме
↗да знаем профилната снимка на нашия
↗потребител които както знаете те са
↗публични за
↗абсолютно всички тоест ако смятате че
↗когато сте качили някаква информация в
↗google снимки а тя е лично ваша не е
↗точно такава
↗ситуацията супер създадохме си нашия url
↗да се надяваме малко по-късно ще
↗разберем въобще дали ще проработи този
↗url след като го създадем какво е нужно
↗да направим да създадем един
↗рек нс което какво означава това прави
↗просто един кол към този url който имаме
↗тук съответно тук просто слагаме google
↗authentication url
↗опс извинявам се това
↗тук трябва не трябва да е jon object
↗може да подадем тю
↗палче супер вече имаме това нещо
↗а
↗съответно трябва
↗да се прехвърлим да си вземем
↗client id то и трябва да си вземем
↗redirect url как се случват тези
↗неща ще си запазя той ще си пусна отново
↗апликацията за да ви покажа нещо много
↗полезно поне за мен заставяме отиваме в
↗а google
↗конзолата отваряме си google cloud
↗конзолата аз имам
↗някакъв създаден project
↗съответно си създавам нов про даваме си
↗някакво супер якото име на
↗проекта супер хипер co project и
↗натискаме след когато след като се е
↗създал изчакваме съвсем мъничко да се
↗създаде ето тук виждате вече е създаден
↗натискаме select project
↗идваме в navigation менюто и тук много
↗внимателно какво правим от pin pin
↗products отиваме в api and service оттук
↗отиваме в
↗authentication и избираме третото
↗изчакваме съвсем мъничко и започваме да
↗си създаваме нашият апликейшън в google
↗както знаете а когато създаваме някакви
↗апликейшъни ние не ги създаваме просто
↗да ги ползваме лично ние си понякога го
↗правим но в повечето случая го създаваме
↗да бъдат публични и да могат много хора
↗да ги ползват съответно какво е нужно да
↗направим от
↗ao от този скрийн
↗тук трябва да изберем че това ще е
↗external
↗апликаций натискаме create
↗даваме имейл на нашия
↗алий
↗отново
↗супер супер
↗хипер co
↗application избираме си нашия имейл
↗адрес скролваме най-до долу и си
↗създаваме и добавяме верските контакти
↗които в повечето случа че ще сме отново
↗ние пишем си отново
↗имейла
↗тини така натискаме save and continue
↗изчакваме съвсем малко както казах ние
↗ще ползваме
↗най-базовите най-базовата аутентикация
↗тоест няма да добавяме абсолютно никаква
↗сензитивна информация което какво
↗означава тук не правим нищо ако искаме
↗да добавим някаква сензитивна
↗информация натискаме add or remove и тук
↗вече можете да видите каква информация
↗можем да имаме имейл адреси се
↗виждат
↗по-конкретна информация за нашия профил
↗cloud платформи и така нататък както
↗казах ние работим с най-базовата
↗информация тъй като нямаме просто
↗времето няма ни стигне за да ни одобрят
↗application натискаме save and
↗continue test user няма да добавям аз
↗абсолютно никакви тест юзъри тъй като аз
↗съм си тест юъ аз съм си
↗девелопъра натискам save виждам сарито
↗какво
↗виждаме виждаме нашето име на
↗апликейшъна super hyper cool application
↗и абсолютно всичко се е създало
↗съответно какво трябва да направим сега
↗да се върнем към дашборд съответно
↗избираме
↗от дясната част полето credentials
↗отваряме
↗credentials и както казах ние работим
↗с client id съответно какво трябва да
↗направим да изберем credentials a
↗to client id избираме го избираме каква
↗е нашата апликация както казахме нашата
↗апликация е web апликация как разбираме
↗че е web апликация ние тук сме писали
↗само backend но това е нашия frontend
↗тоест сла страницата си е
↗frontend съответно оттук избираме web
↗апликация не е нужно да добавяме
↗абсолютно нищо освен нашето много готино
↗име super hyper cool application
↗и единственото нещо което ни е нужно е
↗да имаме authorization redirect url кой
↗е този authorization redirect url това е
↗нашият callback как да знаем какво да
↗добавим тук отваряме си sler точно
↗затова казах че няма да го затварям
↗отварям
↗callback натискам tryout натискам
↗execute тъй като не е имплементирано
↗нищо получавам no response но ето тук в
↗request url аз имам нашия url съответно
↗какво правя идвам тук натискам copy
↗копирам си го идвам тук и си поставям
↗request
↗url след това натискам create след като
↗натисна create и се появяват нещата от
↗които аз имам нужда имам client id
↗копирам си това client id заставам и
↗идваме ето тук където казах че ще е дами
↗поставям си cent
↗id до тук
↗е
↗red url разбрахме кой е ето този тук
↗имайте им предвид че информацията трябва
↗да е
↗точно такава каквато сме подали защото в
↗противен случай нашият апликейшън може
↗да каже url примерно което какво
↗означава че стите които се изпращат от
↗бекенда към google те не съответстват
↗тоест има някъде разминаване подавам си
↗го това нещо съответно виждате тук че
↗малко се скъса извинявам се че точно
↗така се вижда
↗така имам client id
↗то scope
↗redirect
↗добре добре сега какво ще направя ще
↗застана и ще си запазя информацията ето
↗тук тоест тук ще
↗имам
↗r защото малко по-надолу ще трябва да ги
↗ползвам
↗отново имам r url и
↗имам client
↗id взимам си client id
↗цак имам и
↗c secr
↗взимам си и sec и си го поставям
↗тук съответно сега тук ще ползвам един f
↗string да
↗стана малко
↗по-четим id то започва от тук до тук и
↗тук ще
↗кажа qu
↗id тук ще кажа
↗redirect url
↗страхотно
↗добре вече имаме създадени нещата да
↗видим дали можем да се логнем
↗най-вероятно в момента ще получим грешка
↗тъй като колбек няма абсолютно никаква
↗имплементация ето тук може да видите но
↗все пак да видим дали нещо ще проработи
↗как се случват нещата когато тръгнем да
↗правим рекуести с google аутентикация
↗абсолютно всеки път ще виждате тази
↗грешка защо защото когато се
↗автентикиран
↗куста по този начин какво трябва да
↗направим трябва да си вземем url чето да
↗отиваме в
↗логин и както видяхте получихме redirect
↗url miss match
↗съответно това означава че някъде сме
↗объркали
↗нещо нека само малко да подредим кода
↗така влизаме ето тук имаме client id то
↗след имаме client
↗id
↗resp type така така
↗така имаме client id след това
↗red
↗url така имаме и
↗скоуп само да проверим дали съм поставил
↗абсолютно правилното нещо
↗добре спрях апликацията я пуснах наново
↗тъй като
↗имплементирахме а мима което ще го
↗погледнем след мъничко защо защо се
↗получава така
↗аа а нека да продължим
↗на
↗нататък така тука имаме https имаме resp
↗call type така така така така така така
↗така така така така
↗добре ще го фиксне след съвсем мъничко
↗ако не успеем имаме и back вариант така
↗че не се
↗притеснявайте който беп вариант е както
↗знае
↗всеки един си има ето такова нещо което
↗може да види каква му е историята
↗съответно аз преди това си бях
↗имплементирал тоест какво ще направя аз
↗идвам тук копирам си ей това нещичко и
↗само тук сега ще си плесна с моята нужна
↗информация която каква
↗е id и
↗call и ако спрем и пуснем нашия
↗алиш ще видим какво ще се
↗случи виждате явно съм бил допуснал
↗някъде някакво мъничко тапо затова
↗а какво препоръчвам аз всеки път
↗абсолютно всеки път когато се създаде
↗ето такова нещо нещо такъв кол дори ако
↗имате желание ще ви го изпратя в git а
↗github примерно можете директно си го
↗копирате и си го ползвате на новото
↗място тъй като ако пишете абсолютно
↗всичко from scratch шансът да допуснете
↗някаква грешка е голям както виждате
↗натиснах логин виждате моето име моят
↗имейл адрес натискам окей съгласявам се
↗и получавам от колбе no както видяхте
↗нашият колбек тук който го екзек преди
↗мъничко отново ни дава информация no
↗тоест нашият логин
↗работи след съвсем мъничко ще го
↗верифицираме отново спирам на
↗апликейшъна тъй като трябва да си
↗имплементираме нашия
↗callback което е ключово и основно нещо
↗за нашата аутентикация това е мястото в
↗което ние ще закачим кукита и ще
↗а работим с тях съответно както казах на
↗нас ни трябва
↗куеста добавяме си отново куеста който
↗[музика]
↗имаме съответно този куст от този куест
↗ние трябва да си вземем кода на куеста
↗пишеме request от него взимаме от quy
↗параметрите казваме get дай ми кода
↗просто така работи google праща едно
↗нещо което е код в quy параметрите кое
↗са quy параметрите
↗ето тук горе цак това са ри параметрите
↗съответно ако го нямаме този код
↗само
↗секунда ако го нямаме този код какво
↗правим директно казваме ваме някакъв еш
↗и казваме че няма начин да се антикира
↗тоест е направен от някакво друго място
↗http само да си го
↗ирна виждате и fast api което
↗предпочитате принципно е препоръчително
↗да сте консистентни аз започнах със stl
↗затова ще продължа да ползвам stl
↗съответно какво ще направя тук
↗а ще сетна статус код който статус код
↗ще
↗е status
↗то http
↗ще http b request и препоръчително
↗абсолютно всеки път да подавате детайли
↗защо
↗е съответно в случая аз ще кажа че
↗[музика]
↗или
↗супер добре трябва от stl re няма да
↗работи тъй като на него не можем да
↗подадем детейли съответно ще използваме
↗f api cool така продължаваме
↗нататък
↗съответно ако пък го имаме код какво
↗трябва да направим трябва да
↗създадем url какъв е този url отново той
↗е към
↗ето това
↗място само
↗че излагах ви много сериозно не е към
↗това място то url се взима от
↗google.com на на
↗черта
↗супер взимаме си url съответно трябва да
↗си направим нашия тон който е
↗dat вижда
↗се така който какво
↗е подаваме си
↗кода подаваме си
↗тук client id то който си го създадохме
↗малко по-отгоре подаваме
↗си
↗secr тук пропуснах една запетайка
↗подаваме си c secr
↗супер след това си подаваме
↗и
↗r
↗url който red url е този
↗тук ето
↗този ползвам го този
↗тук добре нека да го направим ето
↗така
↗така тука имаме
↗r url съответно след като вече имаме
↗кода имаме client id имаме client secret
↗имаме red url трябва да кажем с какъв
↗какъв тип на автентикация искаме
↗съответно трябва да кажем
↗grand
↗type че ние
↗[музика]
↗ae супер
↗когато сме създали наш нашия data какво
↗остава остава само и единствено да
↗направим към google как става
↗това и използваме асинхронния клиент
↗който асинхронен клиент не е само за за
↗f api а е за абсолютно
↗всички за целия py тоест можете да си го
↗алю
↗навсякъде създаваме си нашия клиент
↗съответно след като сме си създали
↗клиента трябва да направим и си запазвам
↗информацията за ра в е променлива
↗us нс
↗съответно досещате се че правим един a
↗client тъй като е асинхронно al client а
↗и тук правим get
↗подаваме
↗аа не тук не е get извинявам се че ви
↗подведох тук е пост съответно тук
↗подаваме to url
↗който който имаме и подаваме и дейта
↗която имаме която дейта в нашия случай е
↗както знаете тон дета която създадохме
↗малко
↗по-раничко
↗това даже тук не е user а е to tok resp
↗да не бъркаме нещата само секунда
↗съответно какво трябва да направим сега
↗е да кажем на
↗нашия да ни ресне статуса който е
↗получил съответно след като получим този
↗статус трябва да вземем цялото
↗бо j имайте предвид че сме към края
↗тоест не остава още много така
↗че надявам се да не съм
↗ви
↗утежнил към този момент така
↗имаме и казваме просто че си взимаме
↗този j съответно сега тук много важно
↗нещо е да проверим дали има някакви
↗грешки в този н ако има грешки
↗if
↗и
↗j просто трябва
↗данем отново някакъв еш
↗този път само ето така
↗щена супер ако няма трябва да си вземе
↗acc който ни е от
↗google тоест
↗взимаме който
↗е су след като сме го взели можем да
↗вземаме user
↗info
↗url user info url той си е съвсем
↗стандартен
↗който е от google
↗ap
↗опс копирам си го това нещо слагаме ето
↗тук http ps така google apps и тука
↗имаме all out
↗2 този път ползваме версия 3 и искаме
↗user info
↗а user info точно
↗така така след като вече сме взели
↗абсолютно всичко подго имаме вече токана
↗подготвили сме накъде ще правим рикуеста
↗остава само да направим самия ст но за
↗да го направим трябва да се антикира
↗вече към google което как
↗става взимаме създаваме си едни хедри
↗това е съвсем стандартно създаване на
↗хедъри което си
↗е
↗aut казваме че това нещо
↗е
↗тонче и
↗acc какво се получи имаме хедърите имаме
↗и място към което трябва да направим ку
↗което какво означава единствено че
↗трябва да направим
↗куста който ще ето това
↗нещо взимаме си отново
↗клиента и вече имаме us
↗inf както преди мъничко правим си един a
↗само че забележете че тук вече имаме
↗пост а имаме get преди мъничко имахме
↗пост user info url и подаваме хедърите
↗които
↗имаме ето тези хедъри които сме създали
↗съответно вече когато имаме абсолютно
↗всичко това какво казахме че трябва да
↗изчакаме за статуса имаме тока а имаме
↗user inf response
↗точ чакаме си за статусчета
↗и вече имаме официалния user info който
↗user info какво ще ни е user info
↗response
↗jason да погледнем отново какво имаме
↗имаме си кода имаме си лите първо s
↗антикира към google след това ако всичко
↗е както трябва продължаваме нататъка
↗получаваме си access антикира се и
↗взимаме user информацията за нашия user
↗защото какво казахме че ето това тук ще
↗ни върне просто
↗ън user съответно сега правим следващата
↗проверка отново ако ей това нещо
↗така ще си го копирам тъй като времето
↗мъничко напредва тук имаме user info ако
↗има грешка казваме b request имайте
↗предвид че тук можете да добавите доста
↗по допълнителна информация отколкото
↗да просто връщате bet request хубаво е
↗да кажете защо е b request и така
↗нататък но просто тъй като времето ми
↗притиска ще го направ
↗по този начин така продължаваме нататъка
↗имаме трябва да си добавим нещо което е
↗много ключово което е трябва да можем да
↗си създадем нашия
↗токън jwt
↗tok а в
↗кон освен това ще направя и нещо от
↗сорта на
↗[аплодисменти]
↗create access
↗to
↗[аплодисменти]
↗супер и тук
↗имаме съответно имаме ще си направя
↗копие на дета за да не я загубим поради
↗някаква причина съответно всеки път
↗когато правим кита е хубаво да имаме
↗съответно
↗expire и си правим
↗[аплодисменти]
↗daytime day
↗time
↗плюс та делта
↗като тука е хубаво да кажем колко време
↗ни трябва да ане ток
↗access tok
↗expire ще кажем една съответно ето тук
↗казваме
↗ц и казваме access tok expire
↗към нашия тод какво ще направим ще
↗ъпдейтнем и ще добавим
↗expire нашия expire който сме
↗направили съответно сега вече ще енем
↗това цялото
↗нещо jwt
↗което ще
↗е което ще е o
↗jwt
↗j jw супер ще кажем
↗encode подаваме encode и ни трябва
↗някакъв secret с който да
↗антикира да енем нашия ток тук ще си
↗направя secret
↗key
↗super secret
↗key и тук подавам secret kia и е много
↗важно да кажем с какъв алгоритъм а
↗съответно аз
↗абсолютно всеки път ползвам един и същи
↗а който
↗е ша 250
↗тъй като се води един от
↗най-сигурните съответно накрая ще върнем
↗нашия тон който имаме идваме тук а и
↗просто си
↗извикаме
↗нашия така импортна се имаме cre и
↗просто трябва да дадем татата която
↗каква е
↗нашия
↗us и това ще ни създаде токън с user
↗информацията тъй като какво казахме ето
↗тук ще получим цялата информация за
↗юзъра и просто ще добавим и expire date
↗съответно тъй като вече имаме къна
↗създаваме си един
↗респонс който отново ще редик resp и
↗този път ще редиректва към нашата лагер
↗страничка ще се върнем ето тук
↗и на нашия респонс е много важно да му
↗добавим кукито което сме създали и
↗трябва да му дадем име на кукито което
↗access в моя случай ще е access токън
↗подавам му стойност на кукито което е
↗вече създадения токън
↗и дали искам да е http only в случая ще
↗кажа
↗true
↗съответно ще върна този
↗респонс супер нека да видим сега какво
↗ще се случи спряхме вече имаме
↗автентикацията единственото нещо което
↗ни остана е да направим логата но нека
↗да видим дали всичко което сме направили
↗към този момент работи както трябва
↗логваме
↗се виждате това е името на нашия
↗application super hyper cool application
↗натискаме continue и имаме internal св е
↗rar окей нашият
↗callback
↗очаква request което е
↗нормално а ние сме пропуснали да го
↗добавим съответно спираме от
↗отново идваме копирам си го пак тъй като
↗копирах преди мъничко логвам се
↗отново hyper cool апликацията и отново
↗имаме
↗eror и този път грешката
↗е cli
↗окей имаме c eror нека да погледнем
↗отново
↗какво къде ни казва че е грешката имайте
↗предвид че това е изцяло нормално не
↗всеки път от първия път да успяваме да
↗създадем нашата аутентикация
↗и това е just fine така виждаме че ето
↗тук
↗ето на този пост тук получаваме
↗грешката защо получаваме
↗грешката
↗https
↗апи
↗то
↗добре google apis
↗след това имаме client - то нека да го
↗бъгнем защо защо да се затормозяваме
↗когато можем да да бъгнем нашия
↗код така идваме
↗тук даваме
↗[музика]
↗continue google app
↗tok имаме client id то имаме
↗имаме ай
↗кода
↗получаваме
↗аха missing
↗парамет супер съответно това какво
↗означава че имаме ty понякъде
↗което е
↗рек юри аз съм написал url
↗страхотно нека отново да пуснем директно
↗в бик
↗аа и да изпълним
↗рикуеста изчакваме да ударихме брей
↗по страхотно получи се получихме статус
↗код 200
↗имаме access ток да видим
↗този дали ще проработи и казваме not
↗found защо имаме not
↗found в
↗момента трябва да видим какво има в user
↗а заставаме
↗имаме access to и имаме
↗google google app
↗user
↗authorization
↗tok
↗autor който ни е access отгоре имаме
↗access to
↗https само секунда да помисля извинявам
↗се понякога когато трябва да пишем код
↗from
↗scratch по време на презентация се
↗случват такива неща но това е изцяло
↗нормално така а
↗съответно user info
↗google apis all out to
↗2 имаме
↗[музика]
↗отново казвам че ако не успея в
↗следващите 30 секунди да открием да
↗открием грешката отново ще си извадим
↗малкото пищовче което
↗имаме отново получаваме едноф съответно
↗както казах имам ето това пищовче което
↗е супер и ще можем да видим каква е била
↗грешката дали е отново е някакво
↗тапо което е изцяло нормално да
↗получаваме такива грешки съответно това
↗ни е историята така така така така
↗така точно
↗така идваме ето тук а
↗та само че единственото което ще ще го
↗кръстим
↗user ще го кме us ио
↗супер нека да видим сега какво ще се
↗получи имайте предвид чеку си продължава
↗затова първото нещо което получаваме тук
↗е грека тъй като той трябва да се до
↗доизпълни
↗окей казва ни че в момента алгоритъма ни
↗е
↗а грешен защото не може да е ша
↗256 просто забравих че ша 256 е sh
↗256 спираме отново тоест при мъничко
↗бяхме допуснали отново typ което е
↗изцяло нормално и виждате че ре директна
↗нека да погледнем сега какво какво точно
↗се
↗случва тоест ако дойдем ето тук и отидем
↗в application имаме access
↗ток супер получихме вече access ток
↗тоест какво остава да направим трябва да
↗си имплементираме get c user защо трябва
↗да го
↗имплементираме за да можем да вземем
↗някаква информация за защото ако дойда
↗ето тук и го изпълня това получавам
↗n но преди да направим каквото и да е ще
↗ни трябва да деко днем ток на който
↗имаме как се случва това а правим си
↗един декор
↗de access
↗tok съответно той ще получи и
↗който е
↗сн
↗съответно все след като го вземем
↗единственото нещо което трябва да
↗направим да кажем jwt
↗декони този
↗токън с този secret който съм създал и с
↗алгоритъма който
↗имам това е абсолютно всичко което
↗трябва да се
↗направи съответно
↗заставам записката ми напомня че трябва
↗да взема н us което е супер
↗опс
↗съжалявам приемаме го това цялото нещо
↗съответно взимаме си нашия ъ как можем
↗да намерим нашия ър е от ку
↗както казахме има ке и мога да взема get
↗как се казва нашия
↗ток
↗acc отново да не се получи някакво ty
↗отивам копирам си го поставям си и вече
↗имам информацията за ра ако го няма този
↗user
↗а съответно ще резнем някакъв
↗еш който
↗exception ще
↗http
↗exception и отново тук ще вземем статуса
↗статус от stl и ще кажем
↗unut
↗супер в противен случай ако пък
↗го имаме тона какво трябва да направим
↗трябва да си денем тона и да върнем тази
↗информация
↗us
↗information какво правим казваме thee
↗access to и си подаваме нашия us който
↗имаме съответно какво правим ваме просто
↗нашия
↗user information
↗dec нека да видим сега дали ще работи
↗все още сме логнати все още имаме токана
↗въпреки че най-вероятно вече е
↗изтекъл да виждате че е expire тъй като
↗какво казахме тук че ще е валиден една
↗минута нека да го направим 10 минути за
↗да бъде полесно за тестване отиваме
↗отново вги
↗копирам си го ей това цялото нещо
↗заставам
↗тук
↗сините идвам тук
↗казвам се логвам тъй като вече един път
↗съм се логнал не ми поиска нли и
↗получавам
↗access съответно в момента ако отивам в
↗protect го това и виждате цялата
↗информация за
↗ме име ли сега тук фамилията е същата
↗тъй като не съм я въвел
↗а съответно и моя снимка ако отворите на
↗този имейл снимката ми е просто к което
↗е нормално и виждаме кога ейва всичко е
↗страхотно до момента в който искаме да
↗се
↗гаутмрт ветно просто просто трябва в
↗момента да си имплементираме и логата
↗това може би е най-лесното от абсолютно
↗всички неща и то
↗е създаваме си отново респонса
↗респонс който ще искам да е дирек resp
↗отново ще искам да е
↗към този
↗url съответно казвам на респонса delete
↗ook и тук подаваме нашето куки access to
↗и казваме r
↗return
↗resp
↗страхотно нека да погледнем имаме ли все
↗още куки имаме си кукито то не е изтекло
↗ако дойда
↗тук само малко да си смаля екрана така
↗ако дойда тук информация за мен тъй като
↗съм локнат non protected би трябвало да
↗ми даде current daytime now точно така
↗охо малко по-дълго продължи лекцията
↗съжалявам и сега ако изпълня
↗lout не
↗съм спрял сървър и сега ако
↗изпълним просто ме редиректва там където
↗трябва това е пейдж тоест нека сега да
↗погледнем отново да видим каква е
↗ситуацията ще ги отварям ето тук в
↗браузъра protected имаме current
↗daytime ако се опитам да отворя
↗protected
↗unut което е точно това което
↗очакваме ако тръгне се
↗логвам ме редиректва към
↗а моята ср
↗страничка execute отваряме
↗protected цялата информация която е за
↗мен
↗и остана да направим и
↗lout ако го енем тук би трябвало да ме
↗пренасочи директно към лагер
↗страницата точно така в момента ако се
↗опитам отново да изпълня protected би
↗трябвало вече кукито да е
↗изтрито виждате че
↗изтрито супер надявам се все още да има
↗някой тук да не си говоря сам аа съвсем
↗накратко последни финални думи да самари
↗ирам какво направихме какво не
↗направихме защо така се получи и така
↗нататък започваме оттам
↗а имаме fast api минималистична
↗апликация която има login
↗callback protected url който нва на
↗някакъв user който get current user
↗какво прави да погледнем отново взима
↗access to декодира access to и връща
↗информация за user като в access tok
↗можем да добавяме всякаква друга
↗информация
↗а имаме non protected просто random url
↗и имаме logout интересното което е какво
↗направихме в
↗конфигурацията взехме redirect url
↗client id и client secret видяхме че ето
↗тук не е хубаво да пишем нещата from
↗scratch защото можем да допуснем typo в
↗случая и в двата случая когато ползвахме
↗жокер е бе че ето тук е rir uri а не url
↗аз на и двата пъти бях написал
↗url случват се такива неща логин какво
↗прави изпраща куст към google съответно
↗google получава нашия request и google
↗се обръща към нашия endpoint който е
↗callback съответно какво се случва в
↗нашия колбек
↗а това което се случва е взимаме кода от
↗рито след това
↗създаваме един токън
↗ето ето тук правим post request към
↗google google apis token с информацията
↗която искаме за да се оторизираме пред
↗тях
↗получаваме отговора взимаме си вече
↗получения токън чрез access тона и в
↗зависимост какви креден и какви скопо
↗имаме тъй като ние не конфигурирах
↗абсолютно никакви скопо защото просто е
↗нужно време за да бъдат
↗одобрени застанахме и се
↗оторизираме с access токана който
↗имаме съответно изпращаме още един куст
↗към user info url с aut тона който имаме
↗и получаваме цялата информация за нашия
↗user и единственото което имаме последно
↗е
↗lout и последно нещо какво направихме в
↗google cloud конзолата след като сме си
↗създали нашия апликейшън избрахме ето
↗тук да бъде external за да могат
↗абсолютно всички хора да го ползват не
↗сме сетва абсолютно нищо след това в
↗credentials създадохме нови нли с all
↗out client id където избрахме уб
↗апликация дадохме име на нашата уб
↗апликация и предоставихме просто url за
↗нашия
↗callback това е всичко което направихме
↗а съвсем накратко това
↗е цялата презентация която исках да ви
↗предоставя надявам се да да ви е била
↗интересна а надявам се да сте научили
↗нещо ново и сега остава да погледнем
↗само в слайда дали имаме някакви въпроси
↗това е много хубав въпрос а така
↗а ако може две думи за auto да кажем
↗auto това е по-се начин за аутентикация
↗в нашия в нашия код
↗а тоест имаме няколко вида на
↗аутентикация можем да се автентикиран
↗някакви токни ключове във бодита можем
↗да се автентикиран
↗оа а което разликата с ото е че ако
↗а тоест не получаваме колбек те не си
↗комуникират то тогава цялата дискусия е
↗едно едностранна тоест от сървъра към
↗клиента въпросът е дали а кодът ще
↗работи ако методите не бяха asn да кодът
↗ще работи ако методите не са си можем
↗дори в момента да го направим
↗а нека да започнем с
↗ето
↗това просто ще има едно много готино
↗забавяне което
↗е
↗така така details
↗видях втория коментар в exception
↗details без така пише в документацията
↗супер
↗благодаря не мога да го махна
↗благодаря
↗а така така така
↗така само че трябва да променим клиента
↗тоест да ще работи а ако не е асинхронно
↗нека ще направим само една малка част
↗а ето
↗това това няма да го айва колбек и
↗логина и код кодът ще си работи но
↗просто ще имаме едно огромно забавяне в
↗в рекуести и ако има някакво забавяне в
↗google това може да ни рейзне целият
↗апликейшън
↗супер ще оставя още две-три
↗минутки за въпроси нека да бъде ще пусна
↗един
↗таймер или нека нека да бъде до
↗без без 20 или без 25 до без 25 ако
↗нямаме още въпроси
↗ще приключим лекцията тук надявам се да
↗ви е била интересна отново казвам
↗надявам се да сте научили нещо ново
↗надявам се
↗да сте обогатили знанията си
↗през това време докато чакаме
↗а по-конкретно да видим разликата о
↗срещу
↗all ето тук можете да видите абсолютно а
↗цялата
↗разлика ето както казах
↗ото е малко пок и е едностранен
↗едностранна аутентикация което
↗при по-сериозни по-големи апликации може
↗да доведе до някакъв пробив в системата
↗а ако погледнем кога е създаден
↗а той вече е доста старичък
↗2012 имайте им предвид че a в повечето
↗случаи в production апликации работи
↗ръка за ръка с
↗аа
↗https
↗супер виждам че няма повече
↗въпроси затова отново искам да благодаря
↗на хората които са останали
↗докрая и желая ви лека и спокойна вечер
↗довиждане от мене чао чао



