


Biarkan ' s membunuh kata laluan! Pautan masuk sihir ke penyelamatan!
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!
Teknologi Pengesahan Identiti terus berkembang, dari kombinasi kata laluan peti mel tradisional, kepada log masuk sosial, kepada log masuk tanpa kata laluan hari ini (lebih tepat, "e-mel sahaja" log masuk). Sistem log masuk tanpa kata laluan mengesahkan identiti dengan menghantar pautan masuk ke e -mel pengguna.
Proses log masuk tanpa kata laluan adalah seperti berikut:
Page Login Akses Pengguna;
- Masukkan alamat e -mel dan sahkan;
- Sistem menghantar pautan masuk ke alamat e -mel; Selepas mengklik pada pautan, pengguna diarahkan kembali ke aplikasi dan log masuk;
- Pautan tidak sah.
- Jika anda lupa kata laluan aplikasi anda tetapi ingat untuk mendaftarkan e -mel anda, kaedah ini sangat berguna. Teknologi ini juga diterima pakai oleh aplikasi seperti Slack. Tutorial ini akan menunjukkan cara melaksanakan sistem ini dalam aplikasi Laravel. Lihat kod penuh di sini.
- mata teras
meninggalkan kata laluan:
Gunakan "pautan log masuk sihir" berdasarkan URL satu kali untuk mencapai pengesahan bebas kata laluan yang mudah dan selamat.- Tetapan mesra pengguna:
- Tetapan mesra pengguna: Gunakan arahan yang telah ditetapkan dan sebilangan kecil pengubahsuaian untuk melaksanakan sistem ini dengan mudah dalam aplikasi Laravel.
- Keselamatan yang dipertingkatkan: Pautan log masuk sihir menghilangkan kelemahan umum dalam sistem crypto tradisional seperti kata laluan lemah dan serangan pancingan data.
- fleksibiliti dan kawalan: Pengguna masih boleh memilih untuk log masuk dengan kata laluan tradisional, dengan mengambil kira fleksibiliti dan keselamatan.
- Pengurusan token yang cekap: Sistem ini secara automatik mengendalikan token token dan pengesahan untuk memastikan bahawa token digunakan dengan betul dan tidak akan sah untuk masa yang lama.
- Buat aplikasi Pertama, buat aplikasi Laravel baru. Tutorial ini menggunakan Laravel 5.2:
Jika anda sudah mempunyai projek Laravel dengan pengguna dan kata laluan, jangan risau, kami tidak akan mengubah suai proses pengesahan biasa, tetapi tambahkan lapisan di atasnya. Pengguna masih boleh memilih untuk log masuk dengan kata laluan mereka.
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.
Migration
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.
Ubah suai pautan masuk
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.
Buat pengawal log masuk sihir, pandangan dan laluan
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:
- Menjana dan mengaitkan token: Buat kaedah laluan dan pengawal untuk mengendalikan penyerahan borang log masuk, sahkan alamat e -mel, menghasilkan token untuk pengguna, dan mengaitkan token dengan pengguna. Gunakan
str_random()
untuk menghasilkan token rawak dan simpan dalam pangkalan data. - Hantar Mail Token: Tambah kaedah ke model
UserToken
untuk menghantar e -mel yang mengandungi pautan masuk menggunakan ciri mel Laravel. Pautan harus mengandungi token, alamat e -mel dan ingat nilai saya. GunakanMail::raw()
untuk menghantar mesej teks biasa, atau buat paparan mel untuk meningkatkan penampilan mesej. - Pengesahan dan Pengesahan Token: Buat kaedah laluan dan pengawal untuk mengendalikan klik pada pautan log masuk. Gunakan model penghalaan yang mengikat untuk mendapatkan token, sahkan bahawa token telah tamat dan dimiliki oleh alamat e -mel yang dikemukakan. Gunakan perpustakaan
Carbon
untuk menyemak masa tamat tempoh token. Selepas pengesahan berjaya, gunakanAuth::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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Fungsi penghitungan dalam Php8.1 meningkatkan kejelasan dan jenis keselamatan kod dengan menentukan pemalar yang dinamakan. 1) Penghitungan boleh menjadi bilangan bulat, rentetan atau objek, meningkatkan kebolehbacaan kod dan keselamatan jenis. 2) Penghitungan adalah berdasarkan kelas dan menyokong ciri-ciri berorientasikan objek seperti traversal dan refleksi. 3) Penghitungan boleh digunakan untuk perbandingan dan tugasan untuk memastikan keselamatan jenis. 4) Penghitungan menyokong penambahan kaedah untuk melaksanakan logik kompleks. 5) Pemeriksaan jenis dan pengendalian ralat yang ketat boleh mengelakkan kesilapan biasa. 6) Penghitungan mengurangkan nilai sihir dan meningkatkan keupayaan, tetapi memberi perhatian kepada pengoptimuman prestasi.

Bagaimana untuk menetapkan keizinan UnixSocket secara automatik selepas sistem dimulakan semula. Setiap kali sistem dimulakan semula, kita perlu melaksanakan perintah berikut untuk mengubahsuai keizinan UnixSocket: sudo ...

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.
