{"id":24293,"date":"2021-05-11T13:02:00","date_gmt":"2021-05-11T10:02:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24293"},"modified":"2021-10-17T19:19:27","modified_gmt":"2021-10-17T16:19:27","slug":"laraveli-passi-kasutamine-rest-api-autentimiseks","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/laraveli-passi-kasutamine-rest-api-autentimiseks\/","title":{"rendered":"Laraveli passi kasutamine REST API autentimiseks"},"content":{"rendered":"<p>T\u00e4nap\u00e4eva veebiarenduses on API-d v\u00f5i veebiteenused v\u00e4ga populaarsed. Mobiilirakenduse v\u00e4ljat\u00f6\u00f6tamise ajal m\u00e4ngib API silda andmete edastamisel mobiilirakenduse ja veebi vahel. Rakenduste vahel rakenduste vahel edastatavate andmete kaitsmiseks on oluline hoida API-k\u00f5nesid turvaliselt ja autentitud.<\/p>\n<p>Selles artiklis uurime Laraveli passi, mis v\u00f5imaldab meil API-sid autentida. Passport on ehitatud OAuth2 serveri \u00fclaosale, mis on selle ehitamise viis palju turvalisem.<\/p>\n<p>API-de k\u00e4sitlemisel saatsime sissep\u00e4\u00e4suloa, et kontrollida, kas sissetulev taotlus on kehtiv. Kui see on lubatud, peaks ainult see v\u00f5imaldama rakendusega suhtlemist. Laraveli pass pakub mugavat viisi, kuidas luua ja kontrollida API-k\u00f5ne kaudu luba.<\/p>\n<h3>Paigaldamine<\/h3>\n<p>Alustamiseks eeldame, et olete Laraveli oma s\u00fcsteemi installinud. Passi installimiseks k\u00e4ivitage terminalis j\u00e4rgmine k\u00e4sk.<\/p>\n<pre><code>composer require laravel\/passport<\/code><\/pre>\n<p>\u00dclaltoodud k\u00e4sk t\u00f6\u00f6tab Laraveli uusima versiooniga. Kui kasutate vanemat versiooni, on k\u00e4sk veidi erinev, s\u00f5ltuvalt teie Laraveli versioonist. N\u00e4iteks kui Laravel 5.5 on installitud, peaks teie k\u00e4sk olema:<\/p>\n<pre><code>composer require laravel\/passport=~4.0<\/code><\/pre>\n<p>See k\u00e4sk loob oma andmebaaside migreerimise kataloogi. Need migreerimised loovad tabeleid, kuhu salvestatakse kliendid ja juurdep\u00e4\u00e4suload.<\/p>\n<p><code>config\/app.php<\/code>Registreerige oma failis Passsi teenuse pakkuja pakkujate massiivi.<\/p>\n<p>config \/ app.php<\/p>\n<pre><code>'providers' =&gt;[\n\u00a0\u00a0....\n\u00a0\u00a0LaravelPassportPassportServiceProvider::class,\n],<\/code><\/pre>\n<p>K\u00e4ivitame migreerimise, mis loob Passportsi andmebaasitabelid.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>N\u00fc\u00fcd, kui l\u00e4hete oma andmebaasi kliendi juurde, m\u00e4rkate oma andmebaasis loodud uusi tabeleid.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f24e4c0.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f24e4c0.png\" alt=\"Laraveli passi kasutamine REST API autentimiseks\" ><\/a><\/p>\n<p>J\u00e4rgmisena k\u00e4ivitage j\u00e4rgmine k\u00e4sk, mis loob turvaliste juurdep\u00e4\u00e4sulubade loomiseks kr\u00fcptov\u00f5tmed. Allpool olev k\u00e4sk loob &quot;isikliku juurdep\u00e4\u00e4su&quot; ja &quot;parooli andmise&quot; kliendid, kes on tabelisse salvestatud <code>oauth_clients<\/code>.<\/p>\n<pre><code>php artisan passport:install<\/code><\/pre>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" alt=\"Laraveli passi kasutamine REST API autentimiseks\" ><\/a><\/p>\n<p>J\u00e4rgmiste toimingute jaoks saab kasutaja need m\u00e4rgid kopeerida. Tegelikult n\u00e4eme kahte viisi p\u00e4\u00e4sum\u00e4rkide loomiseks. \u00dcks on selle parooli andmise klientide kaudu ja teine \u200b\u200bsisselogimise autentimine.<\/p>\n<h3>Passi seadistamine<\/h3>\n<p>Minge Laraveli kataloogidesse ja avage mudelifail <code>AppUser<\/code>. Selles failis peame lisama <code>LaravelPassportHasApiTokens<\/code>tunnuse.<\/p>\n<p><strong>app \/ User.php<\/strong>.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace App;\n\u00a0\nuse LaravelPassportHasApiTokens;\nuse IlluminateNotificationsNotifiable;\nuse IlluminateFoundationAuthUser as Authenticatable;\n\u00a0\nclass User extends Authenticatable\n{\n\u00a0\u00a0\u00a0\u00a0use HasApiTokens, Notifiable;\n\u00a0\u00a0\u00a0\u00a0....\n}<\/code><\/pre>\n<p>P\u00e4rast seda on meil helistada <code>Passport::routes<\/code>meetodi <code>boot<\/code>meetod <code>AuthServiceProvider<\/code>.<\/p>\n<p><strong>app \/ Providers \/ AuthServiceProvider.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppProviders;\n\u00a0\nuse LaravelPassportPassport;\nuse IlluminateSupportFacadesGate;\nuse IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;\n\u00a0\nclass AuthServiceProvider extends ServiceProvider\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* The policy mappings for the application.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var array\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected $policies = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'AppModel' =&gt; 'AppPoliciesModelPolicy',\n\u00a0\u00a0\u00a0\u00a0];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Register any authentication \/ authorization services.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function boot()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;registerPolicies();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Passport::routes();\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>L\u00f5puks <code>config\/auth.php<\/code>seadistage failis \u201eapi&quot; autentimisvalvuri \u201edraiveri&#8221; v\u00e4\u00e4rtuseks \u201epass&#8221; j\u00e4rgmiselt:<\/p>\n<p><strong>config \/ auth.php<\/strong><\/p>\n<pre><code>'guards' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'web' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'session',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider' =&gt; 'users',\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\n\u00a0\u00a0\u00a0\u00a0'api' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'driver' =&gt; 'passport',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider' =&gt; 'users',\n\u00a0\u00a0\u00a0\u00a0],\n],<\/code><\/pre>\n<h3>Looge REST API ja kaitske seda Laraveli passiga<\/h3>\n<p>Laravel loob faili, <code>routes\/api.php<\/code>kus peaksime deklareerima oma REST API-de l\u00f5pp-punkti. Saame kaitsta oma API-d, lisades sellele vahevara <code>auth:api<\/code>.<\/p>\n<p><strong>marsruudid \/ api.php<\/strong><\/p>\n<pre><code>Route::get('\/api\/categories', 'ApiController@categories')-&gt;middleware('auth:api');<\/code><\/pre>\n<p>Mitme l\u00f5pp-punkti jaoks ei pea me iga kord vahevara lisama. Selle asemel saame seda teha j\u00e4rgmiselt:<\/p>\n<pre><code>Route::group(['middleware' =&gt; 'auth:api'], function(){\n\u00a0\u00a0\u00a0\u00a0Route::get('products', 'ApiController@products');\n\u00a0\u00a0\u00a0\u00a0Route::get('categories', 'ApiController@categories');\n});<\/code><\/pre>\n<p>Kuna meie l\u00f5pp-punkt \u201etooted&#8221; on kaitstud, kui me nimetame seda otse ilma autoriseerimiseta, saame vastuse \u201eAutentimata&#8221;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" alt=\"Laraveli passi kasutamine REST API autentimiseks\" ><\/a><\/p>\n<p>See t\u00e4hendab, et API-le helistamise ajal on h\u00e4davajalik, et igas taotluses edastataks autoriseerimisluba. Niisiis, Passport kontrollib loa ja tagastab vastuse.<\/p>\n<h3>Looge API-le juurdep\u00e4\u00e4suluba<\/h3>\n<p>Rakenduse juurdep\u00e4\u00e4suloa loomiseks on mitu v\u00f5imalust. N\u00e4eme selle \u00f5petuse jaoks neist kahte.<\/p>\n<h4>Esimene v\u00f5imalus<\/h4>\n<p>Esmalt peate helistama n\u00f5utavate parameetritega \/ oauth \/ tokenile ja saate vastuseks m\u00e4rgi.<\/p>\n<p>Eeldame, et kasutate API-p\u00e4ringu tegemiseks <a href=\"https:\/\/themewp.inform.click\/et\/kuidas-kasutada-guzzle-i-php-http-klienti-http-paringute-saatmiseks\/\" title=\"Guzzle'i HTTP-teeki\" >Guzzle&#8217;i HTTP-teeki<\/a>. Oletame, et teil on veel \u00fcks projekt, kust teete API-p\u00e4ringut.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\nuse GuzzleHttpClient;\n\u00a0\n$client = new Client([\n\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'http:\/\/laravel.dev',\n]);\n\u00a0\n$response = $client-&gt;post('\/oauth\/token', [\n\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'grant_type' =&gt; 'password',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'client_id' =&gt; '2',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; '8qyKG7WKb3O3FZh2hUyEOZ3dAj5l9S5ljn2bdeJf',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'username' =&gt; 'sajid@test.com',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; 'my_password',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'scope' =&gt; '*',\n\u00a0\u00a0\u00a0\u00a0],\n]);\n\u00a0\n$arr_result = json_decode((string) $response-&gt;getBody(), true);<\/code><\/pre>\n<p>Koodi kohal tagastatakse massiiv, mis sisaldab v\u00f5tit &#8216;access_token&#8217;. Parameetrid klient_id ja kliendi saladus, mille saime k\u00e4ivitamisel <code>passport:install<\/code>. Need \u00fcksikasjad saate ka oma andmebaasitabelist &#8216;oauth_clients&#8217;.<\/p>\n<p>Proovige uuesti postiljonilt, edastades p\u00e4\u00e4supunkti &#8216;tooted&#8217; l\u00f5pp-punkti ja peaksime vastuse saama.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" alt=\"Laraveli passi kasutamine REST API autentimiseks\" ><\/a><\/p>\n<p>Tegelikult peate sellele API-le helistama nagu allpool:<\/p>\n<pre><code>$response = $client-&gt;get('\/products', [\n\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Authorization' =&gt; 'Bearer '.$access_token,\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\n$arr_result = json_decode((string) $response-&gt;getBody(), true);<\/code><\/pre>\n<h4>Teine v\u00f5imalus<\/h4>\n<p>Esimese valiku korral peaksite oma loa genereerimiseks teadma client_id ja client_secret. M\u00f5nes stsenaariumis ei pruugi see olla mugav viis. Pass annab veel \u00fche v\u00f5imaluse juurdep\u00e4\u00e4suloa loomiseks ainult sisselogimismandaatide kaudu.<\/p>\n<p>Meie <code>ApiController.php<\/code>lisage sisselogimismeetod koos postitaotlusega ja kirjutage sinna allolev kood.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse IlluminateSupportFacadesStorage;\nuse IlluminateSupportFacadesAuth;\n\u00a0\nclass ApiController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function login(){ \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(Auth::attempt(['email' =&gt; request('email'), 'password' =&gt; request('password')])){ \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = Auth::user(); \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$success['token'] =\u00a0 $user-&gt;createToken('MyApp')-&gt; accessToken; \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return response()-&gt;json(['success' =&gt; $success], 200); \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0else{ \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return response()-&gt;json(['error'=&gt;'Unauthorised'], 401); \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} \n\u00a0\u00a0\u00a0\u00a0}<\/code><\/pre>\n<p>Selle API k\u00f5ne tegemiseks peame selle jaoks marsruudi registreerima.<\/p>\n<p><strong>marsruudid \/ api.php<\/strong><\/p>\n<pre><code>Route::post('login', 'ApiController@login');<\/code><\/pre>\n<p>Kasutaja saab sellele API-le HTTP-postitaotluse esitada, kirjutades alloleva koodi:<\/p>\n<pre><code>$response = $client-&gt;post('\/api\/login', [\n\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email' =&gt; 'sajid@test.com',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; 'my_password'\n\u00a0\u00a0\u00a0\u00a0],\n]);\n\u00a0\n$arr_result = json_decode((string) $response-&gt;getBody(), true);<\/code><\/pre>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20656-608215f2ddc78.png\" alt=\"Laraveli passi kasutamine REST API autentimiseks\" ><\/a><\/p>\n<p>Loodame, et m\u00f5istate Laraveli passi kasutamist REST API autentimiseks. Soovime teie m\u00f5tteid kuulda allpool olevas kommentaaride jaotises. Samuti soovitame l\u00e4bi lugeda artikli <a href=\"https:\/\/www.toptal.com\/laravel\/restful-laravel-api-tutorial\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laraveli API \u00f5petus: kuidas ehitada ja testida RESTful API-d,<\/a> mis meie arvates oli lugejatele kasulik.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kas soovite oma rakenduses rakendada Laraveli passi? Selles artiklis n\u00e4itame ypu, kuidas Passport installida, konfigureerida ja kuidas seda kasutada.<\/p>\n","protected":false},"author":1,"featured_media":22200,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[498],"tags":[842],"class_list":["post-24293","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/24293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=24293"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/24293\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/22200"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=24293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=24293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=24293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}