Kapag sumisid tayo sa mundo ng mga aplikasyon na nangangailangan seguridad at kontrol sa pag-accessKaraniwan sa backend na humihingi ng patunay ng pagkakakilanlan sa bawat kahilingan. Upang maiwasan ang abala ng manu-manong pagpapadala ng parehong token sa bawat kahilingan, may mga tool na tinatawag na interceptors, na nagsisilbing isang smart tollbooth kung saan maaari nating baguhin ang kahilingan bago ito mapunta sa server.
Ang malaking bentahe ng paggamit ng pamamaraang ito ay ang paggalang natin sa prinsipyo DRY (Huwag Ulitin ang Iyong Sarili)pinipigilan ang ating code na magmukhang sirang plaka. Sa pamamagitan ng sentralisadong pamamahala ng header, ginagawa nating mas mahusay ang aplikasyon. mapanatili at malinis, na nagbibigay-daan sa amin na makuha ang mga error sa buong mundo nang hindi kinakailangang punan ang bawat serbisyo ng paulit-ulit na mga bloke ng try-catch.
Pag-master ng mga interceptor sa Angular
Sa Angular ecosystem, ang isang interceptor ay karaniwang isang klase na dapat magpatupad ng interface HttpInterceptorPinipilit tayo ng interface na ito na tukuyin ang isang pamamaraan na tinatawag na interceptna tumatanggap ng kasalukuyang kahilingan at isang handler na responsable sa pagpasa ng kahilingan sa susunod na hakbang sa kadena.
Kung susubukan nating magpadala ng token nang walang mga interceptor, kakailanganin nating lumikha ng isang object na Mga HttpHeader sa bawat tawag, na isang ganap na abala. Sa pamamagitan ng pagpapatupad ng interface, magagawa natin i-clone ang kahilingan (dahil ang mga kahilingan sa Angular ay hindi mababago) at idagdag ang Bearer token. Para gumana ito, mahalagang irehistro ang klase sa app.module.ts sa loob ng hanay ng mga provider, gamit ang key HTTP_INTERCEPTORS at pagmamarka sa patlang multi: true upang maiwasan ang pag-overwrite sa iba pang mga interceptor na maaaring umiiral.
Bukod sa pagdaragdag ng mga token, maaari nating gamitin ang kapangyarihan ng RxJS at ang operator na catchError para pangasiwaan ang mga nabigong tugon. Sa ganitong paraan, kung ang server ay magbabalik ng error, maaaring makuha ito ng interceptor at magpakita ng isang pasadyang mensahe o i-redirect ang user, na pinapanatiling hiwalay ang business logic mula sa paghawak ng error sa network.
Implementasyon sa Android gamit ang OkHttp at Retrofit
Kung tatakbo tayo sa pagbuo ng Android app, ang kombinasyon ng OKHttp at Retrofit Ito ang pamantayang ginto. Dito, ang proseso ay magkatulad ngunit may isang napaka-interesante na pagbabago: maaari nating gamitin mga isinapersonal na anotasyon bilang @InjectAuth para magdesisyon kung aling mga kahilingan ang nangangailangan ng token at alin ang dapat na pampubliko.
Ang daloy ay binubuo ng paglikha ng isang AuthInterceptor na sumusuri sa kahilingan. Kung matukoy nito na ang paraan ng API ay minarkahan ng ating anotasyon, awtomatikong ilalagay ng interceptor ang header ng pahintulot. Pinipigilan nito ang developer na kailangang idagdag ang token sa bawat kahulugan ng interface ng Retrofit, na lubos na nagpapabuti sa kakayahang sumukat ng proyekto at paglilinis ng code.
Ang papel ng Axios sa JavaScript
Para sa mga gumagamit ng purong JavaScript o mga magaan na framework, Axios Nag-aalok ito ng napakalakas at madaling i-configure na functionality ng interceptor. Maaari nating tukuyin ang mga interceptor para sa pareho kahilingan bilang sagot.
Ang request interceptor ay tumatakbo bago ipadala ang kahilingan, kaya ito ang mainam na lugar para mag-inject ng Authorization: Bearer tokenSa kabilang banda, ang mga response interceptor ay nagbibigay-daan sa atin na iproseso ang datos bago ito makarating sa .then() o sa await, o kahit na magsagawa mga log ng pag-debug pagkalkula kung gaano katagal tumugon ang server sa pamamagitan ng paghahambing ng mga timestamp.
Seguridad sa backend gamit ang Spring Boot at JWT
Para maging makabuluhan ang lahat ng client-side deployment na ito, dapat alam ng server kung paano pamahalaan ang mga token na ito. Sa isang kapaligiran ng Spring bootKaraniwang ipinapatupad ang arkitektura JWT (JSON Web Token)Ang isang JWT token ay binubuo ng tatlong bahagi: ang header, ang payload (naglalaman ng data at mga pahintulot ng user), at ang digital signature upang maiwasan ang pakikialam.
Ang proseso ay nagsisimula sa pagpapatotoo, kung saan ipinapadala ng gumagamit ang kanilang mga kredensyal at ang server ay bubuo ng isang nilagdaang tokenKasunod nito, ipinapatupad ang isang authorization filter (tulad ng OncePerRequestFilterHinaharang ng filter na ito ang bawat papasok na tawag. Kinukuha nito ang token mula sa header. napatunayan gamit ang isang sikretong susi at, kung tama, nagtatatag ng authentication sa konteksto ng seguridad ng Spring upang payagan ang access sa resource.
Tinitiyak ng pagkakaroon ng matibay na sistema ng mga interceptor sa client at mga filter sa server na ligtas na komunikasyon at mahusay. Mula sa request cloning sa Angular hanggang sa mga anotasyon sa Retrofit o signature validation sa Spring Boot, ang layunin ay palaging pareho: i-automate ang seguridad upang ang programmer ay makapagtuon sa functionality at hindi sa pag-uulit ng mga nakakapagod na gawain sa imprastraktura. Ibahagi ang impormasyong ito upang mas maraming tao ang matuto tungkol sa paksa.