{"id":23126,"date":"2021-04-27T13:20:00","date_gmt":"2021-04-27T10:20:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=23126"},"modified":"2021-10-17T19:51:14","modified_gmt":"2021-10-17T16:51:14","slug":"sotsiaalne-sisselogimissusteem-laraveli-suhtlusportaali-abil","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/sotsiaalne-sisselogimissusteem-laraveli-suhtlusportaali-abil\/","title":{"rendered":"Sotsiaalne sisselogimiss\u00fcsteem Laraveli suhtlusportaali abil"},"content":{"rendered":"<p>Krediit: see artikkel on inspireeritud sellest postitusest <a href=\"https:\/\/scotch.io\/tutorials\/laravel-social-authentication-with-socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laraveli sotsiaalne autentimine Socialite&#8217;iga<\/a><\/p>\n<p>Kas soovite oma Laraveli veebisaidil juurutada sotsiaalse sisselogimise s\u00fcsteemi? Sotsiaalset sisselogimist lubades ei pea teie kasutajad teie veebisaidil registreeruma. See s\u00e4\u00e4stab ka palju t\u00f6\u00f6d, nagu aktiveerimislingi saatmine, e-posti konto kinnitamine. Selles artiklis uurime, kuidas lisada sotsiaalset sisselogimiss\u00fcsteemi Laraveli suhtlusportaali abil.<\/p>\n<p><a href=\"https:\/\/github.com\/laravel\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laraveli suhtlusportaal<\/a> pakub OAuthi autentimist Facebooki, Twitteri, Google&#8217;i, LinkedIni, GitHubi ja Bitbucketiga. Peame selle raamatukogu oma Laraveli veebisaidile installima, konfigureerima, hankima suhtlussaidilt API v\u00f5tmed ja meil on hea minna.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20876-60823669e70f3.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-20876-60823669e70f3.png\" alt=\"Sotsiaalne sisselogimiss\u00fcsteem Laraveli suhtlusportaali abil\" ><\/a><\/p>\n<h3>Loo kasutajate tabel<\/h3>\n<p>Sotsiaalse sisselogimiss\u00fcsteemi juurutamiseks peame looma kasutajate tabeli, kuhu salvestatakse sotsiaalse saidi pakutavad \u00fcksikasjad.<\/p>\n<p>Kui teil on Laraveli uus install, avage k\u00e4surea t\u00f6\u00f6riist projekti juurkataloogis ja k\u00e4ivitage k\u00e4sk <code>php artisan make:auth<\/code>. See k\u00e4sk loob autentimiskontrollerid nagu LoginController, RegisterController jne, mis asuvad kataloogis app \/ Http \/ Controllers \/ Auth. See loob ka vaated login.blade.php, register.blade.php ressursside \/ vaate \/ autorite kataloogi.<\/p>\n<p>J\u00e4rgmisena avage kasutajate r\u00e4nde tabel. Muudame seda vaikeviisi ja lisame veel kaks veergu nimega pakkuja ja pakkuja ID.<\/p>\n<pre><code>public function up()\n{\n\u00a0\u00a0\u00a0\u00a0Schema::create('users', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;increments('id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('name');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('email')-&gt;nullable();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('password')-&gt;nullable();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('provider');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('provider_id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;rememberToken();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>Nagu n\u00e4ete, seadistasime e-posti ja parooli veerud t\u00fchiseks. Miks? Kui kasutame sotsiaalse sisselogimise autentimist, ei saa garanteerida kasutaja e-posti aadressi saamist. Ja sellisel juhul pole ka parool vajalik. Nii et me hoiame e-posti aadressi ja parooli t\u00fchisena. Veergude pakkuja salvestab sotsiaalse saidi nime, n\u00e4iteks facebook, twitter jne. Veerg Provider_id salvestab kasutaja sotsiaalse saidi sotsiaalse ID.<\/p>\n<p>Kui olete \u00fclalolevat kasutajamigratsiooni muutnud, k\u00e4ivitage k\u00e4sk <code>php artisan migrate<\/code>. See loob teie andmebaasi tabeli nimega &quot;kasutajad&quot;.<\/p>\n<p>T\u00f5en\u00e4oliselt saate migreerimisk\u00e4sku k\u00e4ivitades m\u00e4rgi pikkusega seotud kummalise vea. Kui jah, siis avage fail AppServiceProvider.php rakenduse \/ pakkujate kataloogist. Selles failis peame m\u00e4\u00e4rama stringi vaikepikkuse andmebaasi tabeli veergudele.<\/p>\n<p>Fail AppServiceProvider.php<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppProviders;\n\u00a0\nuse IlluminateSupportServiceProvider;\nuse IlluminateSupportFacadesSchema;\n\u00a0\nclass AppServiceProvider extends ServiceProvider\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Bootstrap any application 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\u00a0Schema::defaultStringLength(255);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Register any application 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 register()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<h3>Kasutaja mudel<\/h3>\n<p>Vaikimisi lisab Laravel teie rakenduste kataloogi AppUseri Eloquenti mudeli. Avage rakenduse kaustast User.php. Lisage muutuvale $ t\u00e4idetavale veerule veel kaks veergu Provider_ID.<\/p>\n<pre><code>protected $fillable = [\n\u00a0\u00a0\u00a0\u00a0'name', 'email', 'password', 'provider', 'provider_id',\n];<\/code><\/pre>\n<h3>Installige ja konfigureerige Laravel Socialite<\/h3>\n<p>Selle teegi installimiseks peaks teie arvutisse olema installitud <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">helilooja<\/a>.<\/p>\n<p>K\u00e4ivitage k\u00e4surea t\u00f6\u00f6riistas j\u00e4rgmine k\u00e4sk.<\/p>\n<p><code>composer require laravel\/socialite<\/code><\/p>\n<p>P\u00e4rast teegi installimist registreerige LaravelSocialiteSocialiteServiceProvider oma konfiguratsioonifaili config \/ app.php.<\/p>\n<pre><code>'providers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\/\/ Other service providers...\n\u00a0\n\u00a0\u00a0\u00a0\u00a0LaravelSocialiteSocialiteServiceProvider::class,\n],<\/code><\/pre>\n<p>Lisage samas failis config \/ app.php varjunimede massiivi alla Socialite&#8217;i fassaad.<\/p>\n<pre><code>'Socialite' =&gt; LaravelSocialiteFacadesSocialite::class,<\/code><\/pre>\n<p>N\u00fc\u00fcd on aeg registreerida oma rakendus sotsiaalsel saidil. N\u00e4iteks eeldame, et soovite rakendada Facebooki sisselogimise autentimist. Nii et j\u00e4tkake ja <a href=\"https:\/\/developers.facebook.com\/docs\/apps\/register\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">looge rakendus Facebookis<\/a>.<\/p>\n<p>Kui olete valmis rakenduse ID-ga, oma Facebooki rakenduse rakenduse saladusega, avage fail config \/ services.php ja lisage sellele kood allpool.<\/p>\n<pre><code>'facebook' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id' =&gt; env('FB_APP_ID'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('FB_APP_SECRET'),\n\u00a0\u00a0\u00a0\u00a0'redirect' =&gt; env('FB_CALLBACK_URL'),\n],<\/code><\/pre>\n<p>Nagu \u00fclaltoodud kood n\u00e4itab, peame oma rakenduse \u00fcksikasjad ja tagasihelistamise URL-i salvestama .env-faili.<\/p>\n<pre><code>FB_APP_ID=PASTE_APP_ID_HERE\nFB_APP_SECRET=PASTE_APP_SECRET_HERE\nFB_CALLBACK_URL=YOU_SITE_URL\/login\/facebook\/callback<\/code><\/pre>\n<p>Tagasihelistamise URL on meil edastatud kui YOU_SITE_URL \/ login \/ facebook \/ callback. N\u00fc\u00fcd on aeg luua kaks marsruuti, \u00fcks kasutaja \u00fcmbersuunamiseks OAuthi (meie puhul Facebook) pakkujale ja teine \u200b\u200bteenusepakkujalt tagasihelistamise saamiseks p\u00e4rast autentimist.<\/p>\n<h3>Tegelik kood OAuthi k\u00e4itlemiseks<\/h3>\n<p>Selles etapis oleme Laraveli Socialite&#8217;i jaoks k\u00f5ik seadistused l\u00f5pule viinud. On aeg kirjutada kood, mis haldab OAuthi \u00fcmbersuunamist ja tooma kasutaja \u00fcksikasjad.<\/p>\n<p>Avage oma login.blade.php fail ja asetage allolev kood sinna t\u00f5en\u00e4oliselt p\u00e4rast nuppu Esita.<\/p>\n<pre><code>&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"col-md-6 col-md-offset-4\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Login with\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a href=\"{{ url('\/login\/facebook') }}\"&gt;&lt;i class=\"fa fa-facebook-official\" aria-hidden=\"true\"&gt;&lt;\/i&gt; Facebook&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a href=\"{{ url('\/login\/twitter') }}\"&gt;&lt;i class=\"fa fa-twitter\" aria-hidden=\"true\"&gt;&lt;\/i&gt; Twitter&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a href=\"{{ url('\/login\/github') }}\"&gt;&lt;i class=\"fa fa-github\" aria-hidden=\"true\"&gt;&lt;\/i&gt; Github&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Lisame siia lingi Githubi ja Twitteri jaoks. Nende sotsiaalsete saitide jaoks OAuthi lisamise sammud on samad kui Facebook. Peate lihtsalt looma vastavate sotsiaalsete saitide rakenduse ja salvestama need \u00fcksikasjad samamoodi nagu lisasime Facebooki jaoks.<\/p>\n<p>M\u00e4\u00e4rake marsruudi failis marsruudid allpool.<\/p>\n<pre><code>Route::get('login\/{provider}', 'AuthLoginController@redirectToProvider');\nRoute::get('login\/{provider}\/callback', 'AuthLoginController@handleProviderCallback');<\/code><\/pre>\n<p>J\u00e4rgmisena navigeerige saidile app \/ Http \/ Controllers \/ Auth \/ LoginController.php ja muutke faili. Peaksite sellesse lisama alloleva koodi.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllersAuth;\n\u00a0\nuse AppHttpControllersController;\nuse IlluminateFoundationAuthAuthenticatesUsers;\nuse Socialite;\nuse AppUser;\nuse Auth;\n\u00a0\nclass LoginController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Redirect the user to the GitHub authentication page.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return Response\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function redirectToProvider($provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return Socialite::driver($provider)-&gt;scopes(['email'])-&gt;redirect();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Obtain the user information from GitHub.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return Response\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function handleProviderCallback($provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = Socialite::driver($provider)-&gt;user();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$authUser = $this-&gt;findOrCreateUser($user, $provider);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Auth::login($authUser, true);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect($this-&gt;redirectTo);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* If a user has registered before using social auth, return the user\n\u00a0\u00a0\u00a0\u00a0\u00a0* else, create a new user object.\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 $user Socialite user object\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param $provider Social auth provider\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return\u00a0 User\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function findOrCreateUser($user, $provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$authUser = User::where('provider_id', $user-&gt;id)-&gt;first();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($authUser) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $authUser;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return User::create([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'name'\u00a0\u00a0\u00a0\u00a0 =&gt; $user-&gt;name,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email'\u00a0\u00a0\u00a0 =&gt; $user-&gt;email,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider' =&gt; $provider,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider_id' =&gt; $user-&gt;id\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Meetod redirectToProvider suunab kasutaja sotsiaalse saidi sisselogimislehele. Kui kasutaja on rakenduse autoriseerinud, toome kasutajainfo funktsioonist handProviderCallback. Kui kasutajat pole meie s\u00fcsteemis olemas, lisame selle \u00fcksikasjad meetodiga findOrCreateUser.<\/p>\n<p>Loodetavasti \u00f5ppisite sotsiaalse sisselogimiss\u00fcsteemi kohta tundma Laraveli suhtlusportaali. Kui teil on k\u00fcsimusi v\u00f5i ettepanekuid, j\u00e4tke kommentaar allpool.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/laraveli-mitme-andmebaasiuhenduse-funktsiooni-kasutamine-veebisaidil\/\" title=\"Kuidas kasutada veebisaidil Laraveli mitme andmebaasi\u00fchenduse funktsiooni\">Kuidas kasutada veebisaidil Laraveli mitme andmebaasi\u00fchenduse funktsiooni<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/looge-php-s-mitmekeelne-veebisait-kasutades-laraveli-raamistikku\/\" title=\"Looge PHP-s mitmekeelne veebisait, kasutades Laraveli raamistikku\">Looge PHP-s mitmekeelne veebisait, kasutades Laraveli raamistikku<\/a><\/li>\n<\/ul>\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>Kui soovite lisada oma Laraveli veebisaidile sotsiaalse sisselogimise s\u00fcsteemi, on Laraveli suhtlusportaal raamatukogu, mis aitab meil seda s\u00fcsteemi h\u00e4\u00e4lestada.<\/p>\n","protected":false},"author":1,"featured_media":21626,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[177,498],"tags":[842],"class_list":["post-23126","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-chrome-5","category-laravel2-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/23126","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=23126"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/23126\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/21626"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=23126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=23126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=23126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}