od Podstaw
6 godz. 26 min · Go · Full-stack i Programowanie
Piotr KrzesajW Go wszystko opiera się o typy. Czym one są? Tak zwane typy proste(string, int, float itd.) to tylko początek, interfejsy, struktury i nie tylko. Pokażę Ci jak używać wielu wątków Go i jakie są sposoby komunikacji między nimi, a także opowiem i pokażę na praktycznych przykładach jakie zagrożenia niesie ze sobą wykorzystywanie wielowątkowości.
W Go nie mamy obiektowości znanej z wielu innych języków. Posiada zalążki obiektowości ale sprawia to wielu osobom problemy jak podejść do architektury aplikacji. Nauczę Cię jak podejść do funkcyjności w taki sposób aby wciąż nawet duże aplikacje były łatwo rozwijalne lub co ważniejsze, była możliwość podzielenia ich na mniejsze mikroserwisy gdy zajdzie taka potrzeba.
Wśród programistów można usłyszeć głosy że w Go wielowątkowość jest świetnie rozwiązana i trudno się z tym nie zgodzić ale warto pamiętać że nasze mózgi działają jednowątkowo i często pomijamy zagadnienia takie jak wyścig wątków, deadlock i inne wyzwania, które stawia przed nami praca na dzisiejszych procesorach. Pokażę i wytłumaczę Ci w praktyce większość z nich i jak sobie z nimi radzić i na co uważać. Jeśli nie pracowałeś z językami wielowątkowymi to ta sekcja jest specjalnie dla Ciebie.
Zastanawiałem się wiele razy czy nie istnieje taka technologia w której piszę sobie jeden pliczek i z tego pliku do każdego języka mogę wygenerować sobie klienta i serwer jedną komendą. To jest w wielkim skrócie GRPC, nie musisz się przejmować czy używasz HTTP 1.1/2.0, czy używasz websocketów do transmisji, czy przesyłasz dane w formacie JSON, XML, Protobuf, czy jest moje API kompatybilne wstecz. Tym wszystkim zajmuje się GRPC. Wyjaśnię Ci czym dokładnie jest, dlaczego jest super i wreszcie jak tego używać razem z językiem Go. Napiszemy praktyczny projekt chatu w którym wykorzystamy funkcję server-streaming.
Pisząc aplikację chcemy aby uruchamiała się ona tak samo niezależnie czy uruchamiamy ją na Linuxie, macOS czy na Windowsie i z pomocą przychodzi nam Docker. Pokażę Ci jak z gotowej aplikacji napisanej w Go stworzyć obraz Dockerowy aby móc go uruchamiać na swoim komputerze bądź serwerze. Pokażę Ci również jak nasz obraz Dockerowy połączyć z bazą danych za pomocą Docker Compose aby móc cieszyć się działającą aplikacją uruchamianą jedną komendą.
Kurs Go nie mógłby obejść się bez serwera HTTP stworzonego tylko z pomocą biblioteki wbudowanej w język Go. Dokładnie tak, nie musisz instalować nic poza językiem i już możesz tworzyć serwery co jest świetną wiadomością. Następnie pokażę Ci popularną bibliotekę Gin do tworzenia serwerów. Dzięki temu zobaczysz różnice i ocenisz czy warto zostać przy wbudowanej bibliotece czy może używać zewnętrznych.
Jak w każdym języku serwerowym tak i w Go możemy się podłączyć pod bazę danych. Krok po kroku wyjaśnię Ci jak to zrobić prosto i przyjemnie używać baz SQL, które od dziesiątek lat cieszą się niezwykłą popularnością. Migracje, zapytania czy dbanie o połączenie to nie będzie dla Ciebie nic trudnego.
Ten Kurs powstał z myślą o osobach, które chciałyby poszerzyć swoją wiedzę o język Go. Zakłada on że posiadasz już wiedzę z minimum jednego innego języka programowania i wiesz w jaki sposób działa komunikacja po protokole HTTP. Możesz też znać Go i chcieć zobaczyć jak dzielić programy na paczki tak aby były łatwo rozwijalne w przyszłości.
Dowiedzieliśmy się w jaki sposób generować energię debiuty oraz porównywać
sfałszowane hasło z normalnym hasłem To jest zaimplementowane faktycznie.
Aby to zrobić. Stwórzmy w katalogu user plik serwis tego.
Stwórzmy tam oczywiście musimy nadać paczkę że to jest pakiet Józek
oczywiście nasz go stworzył się w złym katalogu go przenoszą
i stwórzmy sobie tutaj nasz Józek serwis który oczywiście będzie interfejsem
w tym interfejsie na pewno chcemy stworzyć użytkownika user.
Tutaj chcemy podać user.
Model Józef albo inaczej.
Chcemy stworzyć użytkownikiem jest model
którego podczas tworzenia może wystąpić błąd.
Następnie chcemy co chcemy dalej zrobić.
Chcemy na pewno stworzyć użytkownika
Chcemy na pewno zalogować użytkownika czyli login user możemy złożyć kreator.
Możemy zrobić login i to będzie e-mail i hasło.
I też może zostać zwrócony błąd lub Access Token czyli token lub błąd.
Następnie co możemy zapłacić za info.
I to jest nasza trzecia metoda.
I tu Józek info to będzie
nasz identyfikator użytkownika który nie jest linią tylko jest.
I tu możemy zobaczyć naszego użytkownika
lub błąd znając nasz język jest teraz musimy stworzyć naszą strukturę
z małej litery czyli żeby nie było to dostępne poza tą paczką Józek.
I trzecia rzecz którą chcemy zrobić to będzie język opisu.
I tutaj jako wymaganie podamy nasze user
Infrastructure czyli user Infrastructure i chcemy to jako z tej funkcji
wrócimy na nasz serwis i stworzymy naszą strukturę w środku.
To będzie oczywiście serwis z małej litery czyli to będzie nasza struktura.
Tutaj oczywiście podajemy sobie naszą.
I to będzie do nasze user Infrastructure.
I podajemy tu nasze uwagi i realizacji tego jednak serwisu
i tak musimy zaimplementowane trzy metody żeby to zrobić.
To oczywiście trzeba dać tutaj Fang
powiedzieć do jakiej struktury czyli to będzie gimnastyczka Józefa.
Co to samo do loginu i usługi.
Następnie uzupełniamy to o puste struktury
tak aby kompilator był zadowolony i nie zgłaszał nam żadnego błędu.
I tutaj widzę już błąd w funkcji języka
serwisu wracamy strukturę a powinniśmy zwrócić nasz interfejs.
I tutaj dodajemy że zwracamy wskaźnik dlatego że to wszędzie są wskaźniki czyli
wszędzie używamy tej samej strony jest serwis a nie KOPII.
Proszę proszę o tym pamiętać
to dobrze żeby stworzyć to m.in. Frank Józek i Józek metoda kit Józek
wzbogaca nam błąd więc możemy to zwrócić tutaj.
Ważne jest to że tutaj przydałoby się
sprawdzić czy nasz e-mail nie jest pusty i e-mail jest pusty to powinnyśmy sprawdzić
też czy to faktycznie jest e-mail ale myślę że to poradzisz sobie z tym samemu.
Więc jeśli e-mail jest pusty to jest jakiś błąd.
Jak najlepiej zwracać takie błędy
przejdźmy do katalogu Models i stwórzmy tutaj nasze nasze zmienne.
I tutaj np.
e-mail jest.
I stwórzmy błąd error.
Kropka New.
I czy to będzie nazwa naszego błędu.
Tak stwórzmy sobie dokładnie to samo dla dla nazwy.
I dla nas i tak samo dla hasła i tak samo to będzie chyba wszystko.
Więc tutaj pasuje.
I tutaj zmieńmy to na nam.
A tutaj na hasło Czy na pewno będziemy mieli taki wątek posługę.
E-mail jest.
Inwalidów czyli
login i hasło jest nieprawidłowe w przypadku logowania i na pewno musimy go.
Syn wali i na tę chwilę chyba to wszystko
będzie więc tak jeśli nasz e-mail jest pusty to zwróćmy błąd e-mailu.
Jeśli nasz nam jest pusty.
To błąd nam nawet jeśli oczywiście las jest pusty to zwróćmy
las a jeśli nasze hasło jest rzeczywiście puste to też zwróćmy.
Dobre czyli sprawdziliśmy czy nasz
użytkownik jest faktycznie wypełniony a nie tylko np.
w połowie albo daliśmy mu tylko imię.
Oczywiście nie sprawdzamy tutaj czy
e-mail to faktycznie jest e-mail więc możemy podać tutaj cokolwiek czy np.
hasło zawiera minimum jeden znak specjalny albo minimum jedną dużą literę W
zależności od tego jaką politykę haseł chcemy wprowadzić.
I tutaj tworzymy faktyczny użytkownika już nie zwracamy jeśli jest jakiś błąd
więc dobrą praktyką jest przechwytywanie tego typu błędów.
Jeśli takie typu błąd jest z bazy danych no to przydałoby się zwrócić że to jest
błąd bazy danych a nie błąd a nie specyficzny błąd.
Dopiero wtedy wiemy że ten błąd dotyczy
bazy danych ale nie zwracamy go użytkownikowi.
Co jest dobrą praktyką dla tego żeby potencjalni atakujący na tym serwerze nie
byli do końca pewni jakiego rodzaju jest np.
baza danych użyta w naszym kodzie tylko
żebyśmy my to ukryli przed nim i w tym miejscu zwrócimy internet.
Wtedy wiemy że dotyczy to bazy danych możemy np.
ten błąd wpisać do konsoli i dzięki temu będziemy wiedzieli dokładnie co to jest za
błąd ale do użytkownika tego błędu nie zwrócimy.
W takiej samej formie czyli mamy tworzenie
już za nami to teraz jest czas na nasze logowanie
to żeby zalogować to musimy najpierw sprawdzić czy e-mail jest pusty czyli
e-mail jest pusty to wtedy zwróci błąd że e-mail jest pusty czyli robimy efekty.
Jeśli hasło jest puste to wtedy hasło
a jeśli wszystko jest OK to najpierw musimy pobrać za pomocą e-maila
użytkownika i sprawdzić hasło Czy jest takie samo.
I w tym momencie odzywa się do naszego informatora
get your email podajemy e-mail więc dostaniemy użytkownika lub błąd więc jeśli
błąd jest różny od lat to wtedy musimy zwrócić pusty token.
No i tutaj zwróćmy błąd że hasło My nie chcemy mówić użytkownikowi czy podał
złe hasło lub e-mail żeby nie mógł się domyślić.
Gdyby to był potencjalny atakujący co jest
nie tak oczywiście to jest oburzające dla użytkowników ale to zależy od tego w jaki
sposób my to zaproponujemy i w jaki sposób chcemy żeby to działało.
Dobrze jeśli mamy naszego użytkownika to.
Sprawdźmy czy hasło to jest tutaj zachowane czyli to będzie nasz pasek.
Jest takie samo hasło które jak podał przy
losowaniu czyli jeśli spadki Harper's posłużyły się pasek
podajemy nasze zachowane hasło i podajemy hasło które on podał.
Jeśli to jest nieprawidłowe to wtedy
zwróćmy że hasło lub login jest niepoprawne.
Oczywiście bez tokena bo tutaj są dwie wartości.
A jeśli wszystko jest OK to musimy
wygenerować token żeby wygenerować token oczywiście używamy
naszej pomocniczej metody jednak inaczej token od użytkownika pobieramy
identyfikator i nasz sekret w jaki sposób przekazać sekret do naszego serwisu.
Bardzo prosty podczas tworzenia.
Oprócz tego informacje przekazujemy też jej sekretów.
I to będzie nasz styk
oczywiście naszego języka z serwisu przekazujemy jej sekret który jest.
A następnie przekazujemy jej sekret.
I tutaj podczas funkcji zgubiłem gdzieś zgubiłem czy zabijania.
No dobrze w takim razie wracamy do naszego porządkowania terenu.
Musimy to przekazać więc
odwołujemy się do naszego serwisu kropka jej debiut mamy to co
mamy to identyfikator i oczywiście jeśli się nie uda stworzyć token menu
różne no to wtedy musimy zwrócić błąd że nie udało się stworzyć tokena
więc to jest jakiś internetowy błąd więc chcemy Terminal Server Error.
Stwórzmy ten błąd i to będzie nasz serwer.
Dobrze zrobiliśmy go w takim razie.
A to jest nasz token więc wróćmy Token bez żadnego błędu jeśli się udało go stworzyć.
Mamy logowanie mamy tworzenie użytkownika no to taka zróbmy pobieranie informacji o
użytkowniku jeśli mamy identyfikator użytkownika to zakładamy że
ten użytkownik już zautomatyzowany czyli na podstawie identyfikatora użytkownika.
Razie to jest bardzo prosta sprawa.
O info get it.
I tu będziemy mieli użytkownika lub błąd więc po prostu tego użytkownika zwrócimy.
Tylko że tutaj przydałoby się żeby nasz użytkownik.
Nie zobaczył hasła czyli dlatego tutaj ustawiono pusty
Sterling żeby hasło mimo wszystko nie zostało nigdy zwracane.
Jeśli tu wystąpi błąd to oczywiście zwracamy pusty użytkownik i ten błąd
ale nie chcemy zwracać tego błędu więc zwracamy się do siebie
i tutaj zwracamy użytkownika konkretnego który nie będzie miał wypełnionego pola z
hasłem no to dlaczego on pluje błędem dlatego że nasz język jest wskaźnikiem
więc musimy przerobić naszego użytkownika w wskaźnik na konkretnego użytkownika.
Więc mając już zaimplementowane metodę Get
Your info mając już logowanie mając już stworzenie użytkownika mamy nasz serwis na
tę chwilę sprawdźmy czy on działa więc stwórzmy użytkownika Usuń ten
czy usunąć też nasze testowe pobieranie i porównywanie haseł.
Stwórzmy nasz użytkownik więc tak możemy sobie najpierw Józefa
bo musimy stworzyć to będzie Józek Józek serwis i on nam wymaga infrastruktura.
Więc stwórzmy Józek i to będzie paczki Józek
Józek wymaga bazy danych podajemy mu bazę danych a tutaj poznajemy Józek.
Tutaj jest wymagany też jej dobry test
który mamy tutaj zadeklarowany więc my go przekazujemy mają związek.
Tak więc możemy stworzyć użytkownika stwórzmy go więc metodą jak
nie on wymaga tutaj żebyśmy podali taką wszystko stwórzmy sobie spadki user user.
I faktycznie tutaj podajemy nam podajemy.
Musimy podać oczywiście też e-mail i hasło.
Dziecko to będzie pierwsza klasa.
To będzie Nowak jako e-mail.
No to niech to będzie.
Nowak małpa Jimmy a jako hasło to niech to będzie QWERTY.
Mając użytkownika przekażemy go tutaj.
Sprawdźmy czy wystąpił błąd jeśli wystąpił błąd czyli wciąż odwala.
To zamkniemy naszą aplikację.
Tutaj występuje błąd który jest podobny czyli
zmienna ale już została zadeklarowana więc chcemy ją tylko napisać i uruchomimy nasz
program zobaczmy czy to działa jak widzimy program zakończył swoje
działanie zobaczmy co się dzieje w naszej bazie Database DB.
Został stworzony identyfikator 4
którym jest to nasz Piotrek Nowak z hasłem QWERTY jest utrzymany jako plan.
Tego chcemy uniknąć ale chyba coś
zapomnieliśmy zrobić więc wracamy do naszego serwisu
i przy tworzeniu użytkownika zanim stworzymy naszego użytkownika musimy
wpisać nasze hasło czyli nasze hasło to będzie hasło.
Lub błąd i z tego spadki Harper's musimy skasować nasze hasło czyli hasło
Jeśli wystąpił błąd to musimy go obsłużyć czyli zwracamy lub po prostu błąd czyli
tak na rok a tu mamy nasze sfałszowane hasło więc co musimy zrobić po prostu
wpisać nasze hasło sfałszowanym hasłem tu nawet błąd dlatego że tu zadeklarowali
się błąd więc to już to nie jest nowa zmienna i jak już mamy pomijane hasło na
hasło hasło wróćmy do pliku lub kogoś stwórzmy identycznego użytkownika tylko
drugiego wejdziemy do naszej bazy danych zobaczymy że został stworzony a hasło już
jest zastosowane za pomocą takiego magicznego ciągu znaków ale nie jest
dokładnie ten sam jak to jest ten sam więc bardzo możliwe że będą występowały
problemy z tym użytkownikiem bo będziemy znajdować dwa dokładnie takie same rekordy
z tym samym e-mailem który musimy zablokować.
Tworzenie takiego samego użytkownika z takim samym e-mailem czyli jeśli istnieje
użytkownik w takim mianem to jest błąd że użytkownik już istnieje.
W takim razie musimy wrócić do naszego serwisu i podczas tworzenia musimy
najpierw sprawdzić czy wszystkie dane się zgadzają a następnie musimy poszukać
użytkownika czyli stwórzmy sobie zmienną user lub błąd.
I tutaj m.in. get your email i tutaj wpisujemy Józek e-mail.
Jeśli wystąpił błąd.
Jeśli Józek.
E-mail jest główny tutaj jest taki problem że
nasza zmienna usługa jest jako parametr czyli jakby nowy użytkownik.
Czyli to jest nasz istniejący użytkownik.
Możemy rozwiązać ten problem
na przykład zmieniając nazwę tego parametru z USA na New York.
Czy to będzie nasz nowy użytkownik tak aby to wszystko było czytelne i łatwe
w używaniu później tak teraz my pamiętamy że nasz user to jest nowy Józek ale za 3 4
miesiące do tego kodu wrócimy możemy nie mieć zielonego pojęcia co tak naprawdę się
dzieje więc zmieniamy ustawienia żebyśmy
wiedzieli że to jest nowe użytkownik i pobieramy naszego starego użytkownika.
Tak więc jeśli
e-mail nowego użytkownika jest taki sam jak e-mail starego użytkownika dlaczego
sprawdzam czy e-mail nowego jest taki sam jak i my nasz błąd ten nas tak naprawdę
nie interesuje dlatego że jeśli tu wystąpi błąd to nic się nie stało.
Ale jeśli hasło użytkownika hasło e-mail
użytkownika nowego jest identyczne jak z takiego to wtedy zwracamy błąd że user.
Nie mamy tego błędu więc musimy przejść do pliku model i stworzyć ten błąd.
Więc tworzymy ten błąd w taki sam sposób jak poprzednie.
Wniosek o zgodę jest.
Wracamy do skoków.
Zwróciliśmy już ten błąd i tutaj go
podkreśla że używamy błędu błędnej zmiennej która nie istnieje.
Musimy to zmienić na imię Józek.
No dobrze to spróbujmy uruchomić w takim razie nasz kod.
I zobaczymy co się teraz stanie został zwrócony.
Błąd wykonywania naszego kodu w taki sposób że został zwrócony user
czyli ten błąd wystąpił więc oprogramowanie zakończyło swoje działanie
uruchomione jeszcze raz tym żeby dowiedzieć się
że tutaj wchodzi i tak tutaj wchodzi więc nie możemy stworzyć użytkownika z
dokładnie takim samym mailem więc nie mamy problemu podczas logowania że będzie będą
istnieć dwóch takich samych użytkowników z dokładnie takim samym maila.
Stwórzmy więc Piotra Nowaka bez kropki
szacunków RP i uruchomimy Tylko zobaczmy czy on się uruchomi.
Tak i tutaj wyskoczył nam
błąd typu Panik błąd to jest w tym przypadku błąd który występuje kiedy
używamy wskaźnika do zmiennej która nie istnieje albo nie została stworzona czyli.
W tym miejscu możemy ustawić break pointy tutaj tutaj tutaj i tutaj zobaczmy jak
nasz problem zadziałał w momencie kiedy sprawdzaliśmy czy użytkownik istnieje.
Tak więc program po wejściu i zapytanie od
pierwszego użytkownika e-mail jest taki że użytkownik nie istnieje więc wchodzimy
do tego miejsca i zwracamy tutaj użytkownika jako numer i błąd jako numer.
Czyli wracamy ogólnie nic więc jeśli jest
taka sytuacja że chcemy odwołać się do zmiennej która nie istnieje.
Następnie próbujemy się odwołać tutaj do naszego użytkownika w tym miejscu
dokładnie w tym miejscu i ta zmienna nie istnieje.
Czy wskazujemy na coś co nie istnieje więc
Google nie kupuje i nie zwraca nam błąd typu fatalne i się zamyka.
żeby tego uniknąć mamy dwa sposoby rozwiązania tego.
Pierwszy sposób to po prostu sprawdzenie
najpierw że jeśli usługa jest różny od chmury i.
Się zgadza to wtedy wychodzi błąd i to nam
zadziała jak najbardziej ale jak zapewne widzisz ja o tym zapomniałem.
Zapomniałem sprawdzić czy to jest natura żeby tego uniknąć
jeszcze tak dla innych ludzi warto zamiast zwracać wskaźniki do naszych użytkowników
zwracać faktycznych użytkowników po prostu z pustymi polami w środku.
Więc zmieńmy to w tym momencie na coś takiego czyli nie będziemy już zwracać
wskaźników do użytkowników ale faktycznych użytkowników.
Jeśli użytkownik nie istnieje po prostu tworzymy pustą strukturę.
Pusta struktura będzie zawierała puste
wartości w środku domyślne czyli jeśli jest to string to będzie to pusty string.
I jest to przerabiane w strukturach praktycznych na wskaźniki.
I tutaj też puste struktury będziemy zwracać.
I w tym miejscu Jeśli e-mail będzie nie będzie istniał to postawimy sobie
tutaj break point i uruchomimy nasz program jeszcze raz.
No to zobaczymy że nam się nie buduje. Dlaczego.
Dlatego że jest Quality of Józek Józek w pliku serwis 88 linijek 88 dni.
My tutaj mamy wskaźnik faktycznego użytkownika około.
Tak więc w tym momencie już się nam zbuduje.
Zbudujemy ten kod i zobaczmy
no tutaj wchodzi i nie znajduje użytkownik raczej zwraca pustą strukturę i brak błędu
no bo błędu nie ma bo po prostu nie istnieje taki użytkownik.
Przejdźmy dalej.
I tutaj zobaczymy że mamy ten użytkownik i mamy nowego użytkownika
w panelu po lewej jak go zmieniamy nowego użytkownika to zobaczymy że to jest Piotr
Nowak a w użytkowniku które zobaczymy jest pusty czyli nie ma użytkownika w bazie
danych czyli ten warunek nie przejdzie więc program powinien nam przejść w to
miejsce usunie ten brak bo nie jest więcej potrzebny.
Przejdźmy dalej no i zobaczymy że
faktycznie program przeszedł tutaj i tworzy już nam nowego użytkownika.
Break point zobaczmy czy faktycznie
użytkownik został stworzony błąd żaden nie wystąpił.
Więc przejdźmy do bazy danych.
Zobaczmy faktycznie został stworzony użytkownik o identyfikator 6 hasło jest.
Podobne ale jednak chyba inne mamy Piotr Nowak Jimmy Polakom bez tokena.
No dobrze to już mamy przetestowane sprawdzone i naprawione tworzenie
użytkownika to teraz sobie za komentujemy ten kod i za loguje się
czyli stwórzmy token a my juz go serwis i login email
to będzie nasz program Nowak przechodzimy ten email i przechodzimy sobie też hasło.
Hasło na początku podamy niepoprawne tak
żebyśmy nie dostali Access Token i sprawdzili czy
nasz program zadziała poprawnie tak jak chcieliśmy i zaplanowaliśmy
sprawdzenie czy nie ma błędu jeśli jest błąd
w raportu i w tym przypadku powinien nam próbują wejść do tego.
A jeśli Access Token jest poprawny to bardzo
dobrze uruchomimy ten kod i zobaczymy czy działa i jak widzisz w
tej konsoli wypisany został błąd i My Passport jest inwalidą.
Jeśli napiszemy poprawny i uruchomimy to zostanie nam wypisany Access Token.
Pamiętaj że Access Token powinien się pojawić też w bazie danych i zobaczmy czy
pojawił akces token się nie pojawił w bazie danych.
Dlaczego zapomniałem tego dopisać.
Wróćmy do pliku stanowisko GIODO metody LOGIN.
No i mamy tutaj porównywanie hasła tworzenie tokena no to musimy token
jeszcze wpisać m.in. kropka API Access Token.
Tu będziemy aplikować to dla tego użytkownika i ten token.
Ta funkcja może zwrócić nam błąd więc jeśli ten błąd jest różny od lat
to zwracamy pusty token i internet Server Error czyli wystąpił jakiś nieznany błąd.
W sumie możemy wyeliminować ten błąd tak że był on dla nas czytelny.
Tak samo tutaj wyżej ale tutaj wyżej nie jest to potrzebne dlatego że tutaj
najczęstszym problemem będzie po prostu zły jej sekret.
Jak mamy już aktualizację tego Access tokena to wracamy do Majchrowskiego i
zobaczmy czy faktycznie po zalogowaniu już zostanie wpisany do bazy danych.
Jak sobie wyjdziemy i przejdziemy na sam
koniec to zobaczymy że ten token faktycznie już się znajduje czyli wiemy że
użytkownik kiedyś się zablokował i ma jakiś token
zablokowany jeśli zachowujemy się jeszcze raz to ten token zostanie napisany.
No dobrze to jak już mamy ten token
No to spróbujmy za pomocą tokena pobrać użytkownika.
Józek serwis
i zobaczmy że nie posiadamy metody do autoryzacji użytkownika czyli na podstawie
ekranu nie pobieramy już w takim razie musimy wrócić do naszego
serwisu kropka co do naszego interfejsu i dopisać metodę autora.
Podamy Access Token.
I dostaniemy.
Identyfikator użytkownika lub błąd.
No dobrze bo Piszemy tę metodę
na samym dole Frank u gwiazdka Józek serwisu autora.
I co tu musimy zrobić musimy pobrać
użytkownika na podstawie tokena więc sprawdźmy może najpierw czy ten token jest
poprawny czyli spadki Harper's sprawdźmy w Walii i token.
I tutaj mamy token.
Weźmy ten Access Token.
I tu dostaniemy token lub błąd.
Jeśli wystąpił jakiś błąd.
To zwróćmy zero czyli domyślną wartość użytkownika żaden użytkownik nie będzie
miał identyfikatora więc bez problemu możemy go tutaj zwrócić.
I ten błąd możemy też zwrócić albo możemy zwrócić że użytkownik nie jest
autoryzowany stwórzmy sobie błąd który będzie się nazywał a autor jest.
I to będzie nowy błąd.
Na to.
Wróćmy do jego zwróćmy.
Czy użytkownik nie jest zainteresowany
aby wywołać tę metodę potrzebujemy jeszcze sekret więc po przecinku m.in. jej tablety
i ten token tak naprawdę nie jest nam potrzebny dlatego że mamy w bazie danych i
idei więc weźmy m.in. Prawo i token firmy Access Token.
Dzięki temu podejściu trochę się zabezpieczamy przed tym że
jeśli wyciek na nasz sekret to mimo wszystko użytkownicy ci którzy się
zablokowali i są w naszej bazie mogą się zalogować.
A minusem tego rozwiązania jest to że
tylko jeden użytkownik może być naraz zablokowany co co mam na myśli mówiąc to
jeśli użytkownik się zablokuje i potem loguje się znowu na innym urządzeniu to
poprzednie urządzenie zostanie automatycznie blokowane.
Jeśli chcemy temu zaradzić no to musimy wtedy te ceny autogazu dawać lub
przetrzymywać kilka taksonów w bazie danych mamy na to kilka możliwości
więc jeśli pobierze użytkownik czyli user lub błąd to jeśli
jest i wystąpi błąd to wtedy nasz użytkownik jest nie autoryzowany
a jeśli użytkownik istnieje to zwracamy jego identyfikator i brak błędu.
Czyli mamy już autoryzację dopisano sprawdźmy czy ta autoryzacja działa.
Więc po zalogowaniu mamy jakiś token
przekonujemy sobie ten token z konsoli ponieważ będzie on nam potrzebny
za komentujemy KOD i stwórzmy zmienną Access Token.
I klimatem potokiem z konsoli.
To miejsce.
Niepotrzebne stacje.
No i używając naszego języka serwisu.
Cały pokazujemy ten Access Token tu dostaniemy Józek ID lub błąd.
I oczywiście jeśli błąd.
Występuje to.
Przygotujemy go albo wypisze.
No dobrze zobaczmy czy to działa.
I faktycznie dostaliśmy coś do konsoli 6.
Czym jest identyfikator tego konkretnego użytkownika więc już jak jesteśmy
zalogowanie i mamy Józek ID to teraz pobieramy informacje na temat tego
użytkownika jest jak serwis Get Józek info Józek ID.
I tu mamy Józek lub błąd po raz kolejny.
Ten błąd istnieje jeśli nie
czyli kupujemy to z góry a jeśli nie to wybierzmy tego użytkownika i zobaczmy
co my tam tak naprawdę mamy uruchomiono Szkot.
Niestety nam nie zadziałał bo zapomniałem
o znaku przypisania czyli znaku równości w tym miejscu.
Jak widzimy mamy tutaj pełną tablicę wypisano mamy to powiedział Nowak.
Mamy e-mail mamy jego Access Token i zakładając że nie chcemy żeby te
wszystkie dane były wypisywane to musimy przejść do tej metody GET info.
I tutaj
wyczyścić te dane lub stworzyć nową strukturę bo to też jest opcja
i nie chcemy żeby to było kiedy został zaktualizowany.
Time niech będzie Digital.
Niech to będzie to też na.
Nie podoba mi się ten sposób stwórzmy w pliku Models.
Ten nowy typ którego będzie to user info.
I niech to będzie struktura i chcemy przekazać żeby to było nam.
Chcemy żeby to było las i chcemy przekazać żeby to był e-mail.
Dzięki temu mamy w stu procentach kontrole co przekazujemy i nawet jak dodamy nowe
pole do bazy to my i tak będziemy zwracali zawsze imię nazwisko i imię.
Dodajmy żeby ten Jackson był poprawnie nazwany czyli z małych liter
dodajemy tagi do struktur niech to będzie las małych liter i niech to będzie imię.
Musimy oczywiście przerobić w pliku z SE.pl w naszym naszym języku.
My zwracamy uwagę info
i z metody Gattuso więc zwracamy nie użytkownika ale user info.
Tutaj musimy zwrócić pustego użytkownika a
tutaj po prostu ma pójdziemy jednego na drugiego.
Stworzymy usługę info tutaj będzie user info po raz kolejny.
I to będzie nasze imię.
Czyli Józek kropka.
I to będzie las i las.
I tu będzie nasz e-mail czyli to będzie Józek e-mail i wracamy Józek info.
I w tym przypadku mamy już pełną kontrolę
na temat tego co zwracamy do użytkownika gdybyśmy do
niego ruchomy nasz kod i zobaczmy jak faktycznie mamy imię nazwisko i.
I mając już na user serwis.
Następnym krokiem będzie zaimplementowane
z serwera HTTP i zapraszam Cię do następnej lekcji w której to zrobimy.