cari
Rumahpembangunan bahagian belakangtutorial phpBiarkan ' 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.

Let's Kill the Password! Magic Login Links to the Rescue!

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.

Let's Kill the Password! Magic Login Links to the Rescue! Proses log masuk tanpa kata laluan adalah seperti berikut:

Page Login Akses Pengguna;
    Masukkan alamat e -mel dan sahkan;
  1. Sistem menghantar pautan masuk ke alamat e -mel;
  2. Selepas mengklik pada pautan, pengguna diarahkan kembali ke aplikasi dan log masuk;
  3. Pautan tidak sah.
  4. 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.
  5. 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.*
Sebelum menjalankan penghijrahan, anda perlu menyediakan pangkalan data MySQL.

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>
Laravel Versi 5.2 Memperkenalkan ciri yang hebat: Tambah lapisan pengesahan prefabrikasi dengan hanya satu arahan. Mari buat ini:

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:

Let's Kill the Password! Magic Login Links to the Rescue!

Oleh kerana batasan ruang, bahagian -bahagian lain tidak dapat diperluas sepenuhnya, tetapi idea -idea asas adalah seperti berikut:

  • 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. Gunakan Mail::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, 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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Terangkan bagaimana pengimbangan beban mempengaruhi pengurusan sesi dan bagaimana mengatasinya.Terangkan bagaimana pengimbangan beban mempengaruhi pengurusan sesi dan bagaimana mengatasinya.Apr 29, 2025 am 12:42 AM

Beban mengimbangi mempengaruhi pengurusan sesi, tetapi dapat diselesaikan dengan replikasi sesi, ketegangan sesi, dan penyimpanan sesi berpusat. 1. Sesi Replikasi Salinan Data Sesi Antara Pelayan. 2. Sesi Stickiness mengarahkan permintaan pengguna ke pelayan yang sama. 3. Penyimpanan Sesi Pusat menggunakan pelayan bebas seperti Redis untuk menyimpan data sesi untuk memastikan perkongsian data.

Terangkan konsep penguncian sesi.Terangkan konsep penguncian sesi.Apr 29, 2025 am 12:39 AM

Sessionlockingisatechniqueusedtoensureauserererersessionremainsexclusivetooneuseratatime.IScrucialFreventingDataCorruptionSandsecuritybreachesinmulti-userapplications.SessionLockingISimplementedusingserverververveChan

Adakah terdapat alternatif untuk sesi PHP?Adakah terdapat alternatif untuk sesi PHP?Apr 29, 2025 am 12:36 AM

Alternatif untuk sesi PHP termasuk kuki, pengesahan berasaskan token, sesi berasaskan pangkalan data, dan redis/memcached. 1.Cookies Menguruskan sesi dengan menyimpan data pada klien, yang mudah tetapi rendah dalam keselamatan. 2. Pengesahan berasaskan token menggunakan token untuk mengesahkan pengguna, yang sangat selamat tetapi memerlukan logik tambahan. 3.Database-berasaskan data menyimpan data dalam pangkalan data, yang mempunyai skalabilitas yang baik tetapi boleh menjejaskan prestasi. 4. Redis/Memcached menggunakan cache yang diedarkan untuk meningkatkan prestasi dan skalabiliti, tetapi memerlukan pemadanan tambahan

Tentukan istilah 'sesi rampasan' dalam konteks PHP.Tentukan istilah 'sesi rampasan' dalam konteks PHP.Apr 29, 2025 am 12:33 AM

SessionHijacking merujuk kepada penyerang yang menyamar sebagai pengguna dengan mendapatkan sessionId pengguna. Kaedah pencegahan termasuk: 1) menyulitkan komunikasi menggunakan HTTPS; 2) mengesahkan sumber sessionId; 3) menggunakan algoritma generasi sesi yang selamat; 4) Secara kerap mengemas kini sessionId.

Apakah bentuk penuh PHP?Apakah bentuk penuh PHP?Apr 28, 2025 pm 04:58 PM

Artikel ini membincangkan PHP, memperincikan bentuk penuhnya, kegunaan utama dalam pembangunan web, perbandingan dengan Python dan Java, dan kemudahan pembelajarannya untuk pemula.

Bagaimanakah PHP mengendalikan data borang?Bagaimanakah PHP mengendalikan data borang?Apr 28, 2025 pm 04:57 PM

PHP mengendalikan data borang menggunakan $ \ _ post dan $ \ _ mendapatkan superglobals, dengan keselamatan memastikan melalui pengesahan, sanitisasi, dan interaksi pangkalan data yang selamat.

Apakah perbezaan antara PHP dan ASP.NET?Apakah perbezaan antara PHP dan ASP.NET?Apr 28, 2025 pm 04:56 PM

Artikel ini membandingkan PHP dan ASP.NET, memberi tumpuan kepada kesesuaian mereka untuk aplikasi web berskala besar, perbezaan prestasi, dan ciri keselamatan. Kedua-duanya berdaya maju untuk projek besar, tetapi PHP adalah sumber terbuka dan bebas platform, sementara ASP.NET,

Adakah PHP adalah bahasa sensitif kes?Adakah PHP adalah bahasa sensitif kes?Apr 28, 2025 pm 04:55 PM

Kepekaan kes PHP berbeza -beza: Fungsi tidak sensitif, manakala pembolehubah dan kelas sensitif. Amalan terbaik termasuk penamaan yang konsisten dan menggunakan fungsi kes-insensitif untuk perbandingan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.