Mengucapkan selamat tinggal kepada masalah kata laluan dan merangkul log masuk bebas kata laluan yang selamat dan mudah! Artikel ini akan membimbing anda bagaimana untuk melaksanakan sistem log masuk bebas kata laluan berasaskan pautan satu kali dalam aplikasi Laravel untuk meningkatkan keselamatan dan memudahkan pengalaman pengguna.
Artikel ini dikaji semula oleh Younes Rafie dan Wern Ancheta. Terima kasih kepada semua pengulas rakan sebaya di SitePoint untuk mendapatkan kandungan SitePoint dengan sebaik -baiknya!
Proses log masuk tanpa kata laluan adalah seperti berikut:
Page Login Akses Pengguna;
meninggalkan kata laluan:
Gunakan "pautan log masuk sihir" berdasarkan URL satu kali untuk mencapai pengesahan bebas kata laluan yang mudah dan selamat.Tetapan pangkalan data
composer create-project laravel/laravel passwordless-laravel 5.2.*
Buka fail .env dalam direktori root dan masukkan nama hos, nama pengguna dan nama pangkalan data:
Jika anda menggunakan kotak Homestead yang lebih baik, gabungan pangkalan data/nama pengguna/kata laluan adalah Homestead, Homestead, Rahsia.
Membina pengesahan
<code>[...] DB_CONNECTION=mysql DB_HOST=localhost DB_DATABASE=passwordless-app DB_USERNAME=username DB_PASSWORD= [...]</code>
composer create-project laravel/laravel passwordless-laravel 5.2.*
Perintah ini membina semua yang anda perlukan untuk pengesahan, iaitu pandangan, pengawal, dan laluan.
Dalam direktori pangkalan data/migrasi, anda dapat melihat bahawa aplikasi Laravel yang dihasilkan mengandungi fail migrasi yang membuat jadual pengguna dan jadual kata laluan_resets.
kami tidak akan mengubah suai apa -apa kerana kami masih mahu aplikasi mempunyai proses pengesahan biasa.
untuk membuat jadual, jalankan:
<code>[...] DB_CONNECTION=mysql DB_HOST=localhost DB_DATABASE=passwordless-app DB_USERNAME=username DB_PASSWORD= [...]</code>
Aplikasi kini tersedia dan pengguna harus dapat mendaftar dan log masuk menggunakan pautan di bar navigasi.
Seterusnya, kami akan mengubah suai pautan log masuk untuk mengalihkannya ke paparan log masuk tersuai di mana pengguna hanya akan menghantar alamat e -mel tanpa kata laluan.
Navigasi ke sumber/paparan/susun atur/app.blade.php. Di sana anda dapat mencari bahagian bar navigasi. Tukar garis yang mengandungi pautan log masuk (di bawah pernyataan bersyarat yang memeriksa sama ada pengguna telah log keluar) ke:
sumber/paparan/susun atur/app.blade.php
php artisan make:auth
Apabila pengguna yang tidak dikenali cuba mengakses laluan yang dilindungi, mereka harus dibawa ke paparan login tersuai baru, dan bukannya paparan log masuk biasa. Tingkah laku ini ditentukan dalam middleware yang sah. Kita perlu menyesuaikannya:
app/http/middleware/ajaib.php
php artisan migrate
Perhatikan bahawa di blok lain kita telah mengubah redirect untuk menunjuk ke log masuk/magicLink, bukan login biasa.
Langkah seterusnya adalah untuk membuat MagicLogincontroller dalam folder Auth:
[...] @if (Auth::guest()) <li><a href="https://www.php.cn/link/9964364bfd2b38643a0b41b981c01f60'/login/magiclink') }}">Login</a></li> <li><a href="https://www.php.cn/link/9964364bfd2b38643a0b41b981c01f60'/register') }}">Register</a></li> [...]
maka ada laluan yang memaparkan halaman log masuk tersuai:
app/http/routes.php
class Authenticate { [...] public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->guest()) { if ($request->ajax() || $request->wantsJson()) { return response('Unauthorized.', 401); } else { return redirect()->guest('login/magiclink'); } } return $next($request); } [...]
mari kita mengemas kini MagicLoginController untuk memasukkan tindakan pertunjukan:
app/http/controllers/auth/magiclogincontroller.php
php artisan make:controller Auth\MagicLoginController
Untuk paparan log masuk baru, kami akan meminjam paparan log masuk biasa, tetapi padamkan medan kata laluan. Kami juga menukar URL pos borang untuk menunjuk ke /login/magiclink
.
Mari buat folder ajaib dalam folder pandangan/auth untuk menyimpan pandangan baru ini:
[...] Route::get('/login/magiclink', 'Auth\MagicLoginController@show');
mari kita mengemas kini paparan yang baru dibuat untuk:
sumber/paparan/auth/sihir/login.blade.php
class MagicLoginController extends Controller { [...] public function show() { return view('auth.magic.login'); } [...] }
kami akan mengekalkan pilihan untuk log masuk dengan kata laluan, kerana pengguna masih memilih untuk log masuk dengan kata laluan. Jadi jika pengguna mengklik log masuk di bar navigasi, mereka akan melihat paparan log masuk seperti yang ditunjukkan di bawah:
str_random()
untuk menghasilkan token rawak dan simpan dalam pangkalan data. UserToken
untuk menghantar e -mel yang mengandungi pautan masuk menggunakan ciri mel Laravel. Pautan harus mengandungi token, alamat e -mel dan ingat nilai saya. Gunakan Mail::raw()
untuk menghantar mesej teks biasa, atau buat paparan mel untuk meningkatkan penampilan mesej. Carbon
untuk menyemak masa tamat tempoh token. Selepas pengesahan berjaya, gunakan Auth::login()
untuk log masuk ke pengguna dan memadam token yang digunakan. Melalui langkah-langkah di atas, anda boleh melaksanakan sistem log masuk bebas kata laluan yang selamat dan boleh dipercayai dalam aplikasi Laravel, menyediakan pengguna dengan pengalaman log masuk yang lebih mudah dan selamat. Ingatlah untuk menyesuaikan masa tamat tempoh dan tetapan lain mengikut keperluan sebenar anda. Untuk kod lengkap dan langkah yang lebih terperinci, sila rujuk pautan kod lengkap yang anda berikan.
Atas ialah kandungan terperinci Biarkan ' s membunuh kata laluan! Pautan masuk sihir ke penyelamatan!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!