Rumah > hujung hadapan web > tutorial js > Pengesahan, Pengesahan dan Kebenaran

Pengesahan, Pengesahan dan Kebenaran

Linda Hamilton
Lepaskan: 2025-01-17 02:35:11
asal
746 orang telah melayarinya

Validation, Authentication and Authorization

Ikhtisar Kandungan

Artikel ini mengembangkan tutorial sebelumnya yang meliputi penciptaan API CRUD asas dengan Express.js, memfokuskan pada aspek keselamatan yang penting: pengesahan, pengesahan dan kebenaran. Kami akan membina contoh sebelumnya, jadi kebiasaan dengan bahan itu disyorkan. Projek lengkap tersedia di GitHub (pautan disediakan di bawah).

Konsep Utama

  • Pengesahan: Memastikan data yang disediakan pengguna mematuhi peraturan dan piawaian yang telah ditetapkan. Ini penting untuk keselamatan, menghalang kelemahan seperti suntikan SQL. Beberapa sumber menyerlahkan kepentingan pengesahan yang mantap (pautan disediakan di bawah).

  • Pengesahan: Mengesahkan identiti pengguna. Ini biasanya melibatkan menyemak bukti kelayakan (cth., nama pengguna/e-mel dan kata laluan) terhadap rekod yang disimpan.

  • Keizinan: Menentukan tindakan yang dibenarkan dilakukan oleh pengguna. Ini mengawal akses kepada sumber berdasarkan peranan dan kebenaran pengguna.

Melaksanakan Pengesahan

Kami akan mencipta fungsi pengesahan untuk medan name, amount dan date:

  • name: Rentetan, bukan kosong, 10-255 aksara.
  • amount: Nombor atau rentetan angka, positif, bukan kosong.
  • date: Rentetan, pilihan (lalai kepada tarikh semasa jika ditinggalkan), format YYYY-MM-DD.

Fungsi ini (terletak di validations.js) menggunakan semakan jenis dan pengesahan format asas. Pengesahan yang lebih komprehensif (cth., semakan julat tarikh) boleh ditambah.

<code class="language-javascript">// validations.js (excerpt)
const isString = (arg) => typeof arg === "string";
const isNumber = (arg) => !isNaN(Number(arg));

function isValidName(name) { /* ... */ }
function isValidAmount(amount) { /* ... */ }
function isValidDate(date) { /* ... */ }

module.exports = { isValidName, isValidAmount, isValidDate };</code>
Salin selepas log masuk
Salin selepas log masuk

Menambahkan Pengesahan dan Keizinan

Untuk demonstrasi, kami akan menggunakan storan data dalam memori (susunan objek) untuk pengguna dan perbelanjaan. Ini tidak sesuai untuk pengeluaran.

Fail data.js menyimpan data pengguna dan perbelanjaan:

<code class="language-javascript">// data.js (excerpt)
let users = [
    { id: "...", email: "...", password: "..." }, //Example User
    // ...more users
];

let expenditures = [
    { id: "...", userId: "...", name: "...", amount: ..., date: "..." }, //Example Expense
    // ...more expenses
];

module.exports = { expenditures, users };</code>
Salin selepas log masuk

Titik Tamat Pendaftaran (/users/signup)

Titik akhir ini mencipta pengguna baharu. Ia mengesahkan e-mel dan kata laluan, menyemak pendua e-mel, menjana UUID dan (untuk demo ini sahaja) menyimpan kata laluan mentah. Token pengesahan berkod base64 (e-mel:UUID) dikembalikan. Pencincangan kata laluan ditinggalkan untuk kesederhanaan tetapi penting dalam persekitaran pengeluaran.

Log Masuk Endpoint (/users/login)

Titik akhir ini mengesahkan pengguna sedia ada. Ia mengesahkan kelayakan dan mengembalikan token pengesahan berkod base64 jika berjaya.

Titik Akhir Dilindungi

Untuk melindungi titik akhir (cth., /expenditures), kami akan memerlukan token pengesahan dalam pengepala permintaan (Authorization pengepala). Token dinyahkod, pengguna disahkan dan hanya data pengguna sendiri dikembalikan.

<code class="language-javascript">// validations.js (excerpt)
const isString = (arg) => typeof arg === "string";
const isNumber = (arg) => !isNaN(Number(arg));

function isValidName(name) { /* ... */ }
function isValidAmount(amount) { /* ... */ }
function isValidDate(date) { /* ... */ }

module.exports = { isValidName, isValidAmount, isValidDate };</code>
Salin selepas log masuk
Salin selepas log masuk

Kesimpulan

Artikel ini memberikan pengenalan asas kepada pengesahan, pengesahan dan kebenaran dalam API Node.js/Express.js. Ingat bahawa langkah keselamatan yang ditunjukkan di sini dipermudahkan untuk tujuan pendidikan dan seharusnya tidak digunakan dalam sistem pengeluaran. Aplikasi sedia pengeluaran memerlukan pencincangan kata laluan yang mantap, pengurusan token selamat (JWT disyorkan) dan penyepaduan pangkalan data.

Sumber

(Ingat untuk menggantikan ruang letak kurungan dengan pautan sebenar.)

Atas ialah kandungan terperinci Pengesahan, Pengesahan dan Kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan