Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Bagaimana untuk melaksanakan log masuk dalam nodejs

Bagaimana untuk melaksanakan log masuk dalam nodejs

王林
Lepaskan: 2023-05-28 10:12:07
asal
862 orang telah melayarinya

Node.js ialah bahasa pengaturcaraan JavaScript sebelah pelayan yang sangat popular, yang memainkan peranan penting dalam aplikasi pembangunan web. Melaksanakan aplikasi Web yang lengkap memerlukan penggunaan pelbagai teknologi dan alatan, salah satunya adalah fungsi yang sangat kritikal ialah sistem log masuk pengguna.

Dalam artikel ini, kami akan memperkenalkan cara Node.js melaksanakan fungsi log masuk. Kami akan menghuraikan aspek berikut: cara membina halaman borang log masuk pengguna, cara mengesahkan maklumat yang dimasukkan oleh pengguna, cara membuat sesi pengguna dan cara menggunakan sesi pengguna dalam aplikasi web.

1. Bina borang log masuk pengguna
Pertama, untuk membolehkan pengguna log masuk ke aplikasi web kami, kami perlu membina borang log masuk pengguna terlebih dahulu. Di sini kita boleh menggunakan HTML dan CSS untuk membina halaman borang log masuk yang ringkas dan cantik Kodnya adalah seperti berikut:

rreee

Kod ini menggunakan beberapa gaya asas HTML dan CSS untuk mencipta borang log masuk yang ringkas, termasuk nama pengguna dan Dua. kotak input untuk kata laluan, dan butang "Log Masuk" ditambah di bahagian bawah borang.

2. Sahkan maklumat yang dimasukkan oleh pengguna
Selepas pengguna menyerahkan borang log masuk, kami perlu mengesahkan sama ada nama pengguna dan kata laluan yang dimasukkan oleh pengguna adalah betul. Di sini kita boleh menggunakan rangka kerja Express Node.js untuk mendapatkan dan mengesahkan data borang. Berikut ialah fungsi pemprosesan penghalaan Ekspres yang mudah, yang menerima permintaan POST daripada borang log masuk dan mengesahkan nama pengguna dan kata laluan yang diserahkan:

<!DOCTYPE html>
<html>
<head>
  <title>用户登录</title>
  <style>
    body {
      font-family: Arial, sans-serif;
    }
    label {
      display: block;
      margin-bottom: 10px;
    }
    input {
      border: 1px solid #ccc;
      padding: 5px;
    }
    button {
      background-color: #4CAF50;
      color: white;
      border: none;
      cursor: pointer;
      padding: 10px 20px;
      margin-top: 10px;
    }
  </style>
</head>
<body>
  <h1>用户登录</h1>
  <form method="POST" action="/login">
    <div>
      <label for="username">用户名</label>
      <input type="text" id="username" name="username" placeholder="请输入用户名">
    </div>
    <div>
      <label for="password">密码</label>
      <input type="password" id="password" name="password" placeholder="请输入密码">
    </div>
    <button type="submit">登录</button>
  </form>
</body>
</html>
Salin selepas log masuk

Kod ini menggunakan penghurai badan perisian tengah Ekspres untuk menghuraikan data Borang, dan mendapatkan nama pengguna dan kata laluan yang diserahkan melalui objek req.body. Seterusnya, kami mengesahkan nama pengguna dan kata laluan Jika pengesahan diluluskan, sesi pengguna boleh dibuat (iaitu, cara untuk menyimpan maklumat pengguna di bahagian pelayan, yang akan diterangkan secara terperinci kemudian), dan pengguna akan menjadi. dihalakan semula ke halaman utama aplikasi.

Jika pengesahan gagal, kami boleh menggunakan enjin templat dalam Express untuk memaparkan halaman mesej ralat dan menghantar mesej ralat kepada templat Kodnya adalah seperti berikut:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));

app.post('/login', (req, res) => {
  const username = req.body.username;
  const password = req.body.password;
  // 进行验证
  if (username === 'admin' && password === '123456') {
    // 登录成功,创建会话
    req.session.user = username;
    res.redirect('/dashboard');
  } else {
    // 登录失败,显示错误信息
    res.render('login', { error: '用户名或密码错误' });
  }
});
Salin selepas log masuk

Di sini kami gunakan Ekspres Gunakan enjin templat ejs dalam halaman untuk memaparkan halaman log masuk dan halaman mesej ralat Ambil perhatian bahawa mesej ralat mesti dihantar ke templat semasa memaparkan halaman.

3. Cipta sesi pengguna
Dalam kod di atas, kami menyebut tentang mencipta sesi pengguna (iaitu, cara menyimpan maklumat pengguna). Dalam Node.js, kami boleh menggunakan modul sesi ekspres untuk mencipta dan mengurus sesi pengguna. Memasang dan menggunakan modul sesi ekspres adalah sangat mudah, cuma tambahkan kod berikut pada aplikasi anda:

app.set('view engine', 'ejs');

app.get('/login', (req, res) => {
  res.render('login', { error: null });
});

app.post('/login', (req, res) => {
  const username = req.body.username;
  const password = req.body.password;
  // 进行验证
  if (username === 'admin' && password === '123456') {
    // 登录成功,创建会话
    req.session.user = username;
    res.redirect('/dashboard');
  } else {
    // 登录失败,显示错误信息
    res.render('login', { error: '用户名或密码错误' });
  }
});
Salin selepas log masuk

Kod ini menggunakan modul sesi ekspres untuk mencipta perisian tengah sesi dan tetapkan kunci (rahsia) untuk menyulitkan data sesi. Modul ini juga menyediakan beberapa pilihan lain, seperti pilihan simpan semula dan saveUninitialized untuk mengkonfigurasi tetapan kegigihan sesi Di sini kami menetapkan kedua-duanya kepada palsu untuk menggunakan tetapan lalai.

Selepas pengguna berjaya log masuk, buat sesi pada bahagian pelayan dan simpan maklumat pengguna dalam sesi Kod adalah seperti berikut:

const session = require('express-session');
app.use(session({
  secret: 'my-secret-key',
  resave: false,
  saveUninitialized: false
}));
Salin selepas log masuk

Dengan cara ini, apabila pengguna log. dalam berjaya, data sesi adalah Ia akan disimpan pada bahagian pelayan, dan pengguna boleh menggunakan sesi ini untuk melaksanakan operasi dalam aplikasi web seterusnya.

4. Menggunakan sesi pengguna dalam aplikasi web
Selepas mencipta sesi pengguna, kami perlu menggunakannya dalam aplikasi web untuk melaksanakan pengesahan pengguna dan kebenaran operasi serta fungsi lain. Express menyediakan objek req.session untuk mengakses data sesi, dan kami boleh menggunakan objek ini untuk melaksanakan fungsi yang berkaitan.

Sebagai contoh, apabila pengguna mengakses halaman yang memerlukan log masuk, kami boleh menentukan sama ada pengguna log masuk dengan menyemak sama ada pengguna semasa mempunyai sesi Jika tidak, ubah hala ke halaman log masuk seperti berikut:

req.session.user = username;
Salin selepas log masuk

Di sini kami menyemak sama ada terdapat maklumat pengguna dalam objek req.session Jika ya, halaman papan pemuka akan dipaparkan.

Selain itu, kami juga boleh menggunakan sesi pengguna untuk membenarkan operasi yang memerlukan pengesahan pengguna, contohnya:

app.get('/dashboard', (req, res) => {
  if (!req.session.user) {
    res.redirect('/login');
    return;
  }
  // 用户已登录,渲染页面
  res.render('dashboard');
});
Salin selepas log masuk

Dalam kod ini, kami menyemak sama ada sesi semasa mengandungi maklumat pengguna, Jika tidak, kod status 401 dikembalikan; kemudian kami menyemak kebenaran pengguna semasa, dan jika pengguna bukan pentadbir, kod status 403 akhirnya kami melakukan operasi pemadaman dan mengembalikan respons yang berjaya.

Kesimpulan
Melalui pengenalan artikel ini, anda telah memahami cara Node.js melaksanakan fungsi log masuk pengguna. Anda telah mempelajari cara membina borang log masuk, mengesahkan maklumat pengguna, mencipta sesi pengguna dan menggunakan sesi pengguna dalam aplikasi web untuk melaksanakan fungsi pengesahan dan kebenaran. Sudah tentu, melaksanakan fungsi log masuk pengguna juga melibatkan banyak butiran dan teknologi lain, yang kami sediakan untuk rujukan sahaja. Jika anda mempunyai cara yang lebih baik untuk melaksanakannya, sila kongsikannya.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan log masuk dalam nodejs. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan