Bagaimana untuk log masuk ke bahagian belakang dengan nodejs

WBOY
Lepaskan: 2023-05-23 13:02:39
asal
474 orang telah melayarinya

Sebagai alat pembangunan untuk melaksanakan persekitaran masa jalan JavaScript sebelah pelayan, Node.js secara beransur-ansur telah digunakan secara meluas. Node.js menyediakan cara untuk menulis aplikasi rangkaian dalam cara yang didorong oleh peristiwa, membolehkan pembangun menyediakan pelayan dan membina aplikasi berasaskan web dengan mudah.

Dalam banyak aplikasi web, log masuk pengguna adalah bahagian yang sangat penting. Pentadbir perlu log masuk ke sistem pengurusan bahagian belakang untuk mengurus data dan perniagaan. Oleh itu, dalam Node.js, adalah perlu untuk melaksanakan pengesahan log masuk asas Proses ini memerlukan satu siri operasi seperti pengesahan identiti pengguna dan pengurusan panggilan balik.

Artikel ini akan memperkenalkan beberapa kaedah pengesahan log masuk biasa dalam Node.js, termasuk menggunakan perisian tengah, menggunakan pengurusan sesi sesi dan menggunakan JSON Web Token (JWT) untuk melaksanakan pengesahan token.

Menggunakan middleware

Dalam Node.js, middleware ialah konsep penting yang mengendalikan permintaan HTTP dan membenarkan pengubahsuaian respons dan keputusan untuk menghantar permintaan kepada middleware seterusnya. Oleh itu, melaksanakan fungsi log masuk juga boleh diselesaikan melalui perisian tengah.

Faedah terbesar menggunakan perisian tengah ialah ia boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Pada masa yang sama, ia juga boleh mengurangkan modul berulang kod.

Contoh kod:

const express = require('express');
const app = express();
const port = 3000;

//中间件
app.use(express.urlencoded({extended: false}));
app.use(express.json());

//登录页面
app.get('/login', function(req, res) {
  res.sendFile(__dirname + '/login.html');
});

//登录验证
app.post('/login', function(req, res){
  const username = req.body.username;
  const password = req.body.password;

  if(username === 'admin' && password === '123456'){
    // 验证成功,则可以将用户信息存储到session中
    req.session.userinfo = req.body;
    res.send('登录成功');
  }else{
    res.send('用户名或密码错误!');
  }
});

app.listen(port, function(){
  console.log(`Server is running on port ${port}`);
});
Salin selepas log masuk

Dalam kod di atas, kami menggunakan express middleware untuk mengendalikan permintaan dan respons HTTP, dan menggunakan express-session middleware untuk mengurus sesi pengguna.

Gunakan pengurusan sesi

Dalam amalan pembangunan Web, sesi merujuk kepada mekanisme untuk menyimpan maklumat di bahagian pelayan. Ia disimpan dalam bentuk nilai kunci, kuncinya ialah sessionID, dan nilai ialah objek dalam format JSON, yang boleh menyimpan maklumat identiti pengguna, maklumat kebenaran, dsb.

Untuk melaksanakan pengurusan sesi asas dalam Node.js, anda perlu menggunakan express-session perisian tengah. Apabila menggunakan express-session middleware, anda perlu menetapkan parameter secret untuk tandatangan, yang boleh memastikan keselamatan sesi. Pada masa yang sama, anda perlu menetapkan parameter resave dan parameter saveUnitialized kepada false, yang boleh mengelakkan penulisan semula sesi dan menyimpan sesi yang tidak dimulakan.

Contoh kod:

const express = require('express');
const app = express();
const session = require('express-session');
const port = 3000;

//使用express-session中间件
app.use(session({
  secret: 'sessiontest',
  resave: false,
  saveUnitialized: false,
  cookie: {
    maxAge: 1000 * 60 * 30
  }
}));

// 登录页面
app.get('/login', function(req, res) {
  res.sendFile(__dirname + '/login.html');
});

//登录验证
app.post('/login', function(req, res){
  const username = req.body.username;
  const password = req.body.password;

  if(username === 'admin' && password === '123456'){
    // 验证成功,则可以将用户信息存储到session中
    req.session.userinfo = req.body;
    res.send('登录成功');
  }else{
    res.send('用户名或密码错误!');
  }
});

//后台页面
app.get('/admin', function(req, res){
    // 验证session中是否存储了用户信息
    const userinfo = req.session.userinfo;
    if(userinfo && userinfo.username){
        res.sendFile(__dirname + '/admin.html');
    }else{
        //如果未存储,则重定向到登录页面
        res.redirect('/login');
    }
});

app.listen(port, function(){
  console.log(`Server is running on port ${port}`);
});
Salin selepas log masuk

Gunakan JSON Web Token (JWT) untuk melaksanakan pengesahan token

Selain menggunakan sesi untuk mengurus status log masuk pengguna, anda juga boleh menggunakan JSON Web Token ( JWT) untuk melaksanakan pengesahan token. JWT ialah protokol pengesahan yang ringan, selamat dan fleksibel. Dalam protokol ini, pelayan menjana token yang mengandungi maklumat pengguna dan kemudian mengembalikan token kepada klien. Permintaan seterusnya perlu membawa token dalam pengepala HTTP.

Kelebihan menggunakan JWT ialah ia tidak perlu menyimpan maklumat pengguna pada pelayan, tetapi mengekod maklumat pengguna ke dalam token, sekali gus mengurangkan tekanan storan pada pelayan. Pada masa yang sama, memandangkan token mengandungi maklumat pengguna, maklumat identiti pengguna boleh dipindahkan dengan mudah antara klien dan pelayan.

Untuk menggunakan JWT, anda perlu menggunakan pustaka jsonwebtoken untuk melaksanakan operasi pertanyaan, yang boleh berfungsi dalam node.js dan berfungsi dalam penyemak imbas. Apabila menggunakan jsonwebtoken, anda perlu menetapkan kunci dan tempoh sah untuk memastikan token yang dijana boleh disahkan dan diterima.

Contoh kod:

const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
const port = 3000;

//生成Token
app.post('/login', function(req, res){
  const username = req.body.username;
  const password = req.body.password;

  if(username === 'admin' && password === '123456'){
    const userinfo = {
      name: username
    }
    //在jsonwebtoken中生成Token
    jwt.sign(userinfo, 'secretkey', {expiresIn: '10min'}, function(err, token){
      if(err) throw err;
      res.json({
        token: token
      });
    })
  }else{
    res.send('用户名或密码错误!');
  }
});

// 验证Token
app.get('/admin', verifyToken, function(req, res){
  res.sendFile(__dirname + '/admin.html');
});

//中间件,用于验证Token
function verifyToken(req, res, next){
  //从请求头中获取Token
  const bearerHeader = req.hearders['authorization'];
  if(typeof bearerHeader !== 'undefined'){
    const bearerToken = bearerHeader.split(' ')[1];
    // 在jsonwebtoken中验证Token
    jwt.verify(bearerToken, 'secretkey', function(err, data){
      if(err) res.sendStatus(403);
      req.userinfo = data;
      next();
    });
  }else{
    res.sendStatus(403);
  }
};

app.listen(port, function(){
  console.log(`Server is running on port ${port}`);
});
Salin selepas log masuk

Melalui kaedah di atas, kami boleh melaksanakan fungsi pengesahan log masuk asas dalam Node.js. Penyelesaian yang berbeza boleh dipilih berdasarkan keperluan perniagaan tertentu. Pada masa yang sama, anda juga perlu memberi perhatian kepada keselamatan dan kestabilan log masuk untuk memastikan tiada kelemahan akan berlaku dan data pengguna akan rosak.

Atas ialah kandungan terperinci Bagaimana untuk log masuk ke bahagian belakang dengan 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!