Terokai fungsi fungsi "seterusnya" dalam perisian tengah Express dan peranannya dalam mengubah hala ke fungsi lain.
P粉195402292
P粉195402292 2024-04-02 21:02:16
0
1
432

Saya baru menggunakan Nodejs dan mengusahakan Express js dan kini saya sedang mengusahakan "fungsi perisian tengah" untuk laluan tertentu dan saya ingin tahu "untuk apa yang akan digunakan seterusnya", bermakna selepas mengesahkan perkara yang boleh dilakukan oleh fungsi "seterusnya"? Jika kita ingin mengalihkan/mengalih ke fungsi lain maka bagaimana kita melakukannya? Apakah itu "checkAuthentication"? Ini kod semasa saya

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

// Custom middleware function
const authMiddleware = (req, res, next) => {
  // Check if user is authenticated
  const isAuthenticated = checkAuthentication(req);
  
  if (isAuthenticated) {
    next();
  } else {
    // User is not authenticated, send an unauthorized response
    res.status(401).send('Unauthorized');
  }
};

// Middleware function is applied to specific routes
app.get('/protected', authMiddleware, (req, res) => {
  res.send('Protected Route');
});

// Route handler
app.get('/', (req, res) => {
  res.send('Home Page');
});

// Start the server
app.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

P粉195402292
P粉195402292

membalas semua(1)
P粉738676186

Seterusnya ialah fungsi panggil balik yang dihantar ke fungsi middleware. Anda boleh menemuinya di bawah nama yang berbeza dalam rangka kerja yang berbeza tetapi konsepnya tetap sama.

Saya akan cuba menerangkan middleware melalui kod anda sendiri.

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

function checkAuthentication(req) {
  /*
  I am considering this as my authentication function. 
  When the user logged in, server has sent him a token, which now will act as a validator. 
  */

  if (req.headers.token) {
    const user = someFunctionToFetchUser(req.header.token)
    return user
  } else {
    return false
  }
}

/*
Now I want a function to be there on each protected api routes
to make user if user has a valid token then only allow them to interact with the data base otherwise throw an error 
*/


const authMiddleware = (req, res, next) => {
  // Check if user is authenticated
  const isAuthenticated = checkAuthentication(req);

  if (isAuthenticated) {
    // Now you have verified the has valid a token. So allow user 
    // to reach to the controller or any other middleware, if any.
    next();
  } else {
    // User is not authenticated, send an unauthorized response
    res.status(401).send('Unauthorized');
  }
};

// Middleware function is applied to specific routes
app.get('/protected', authMiddleware, (req, res) => {
  res.send('Protected Route');
});

// You can have any number of middlewares
app.get('/protected', authMiddleware, someOtherMiddleware, (req, res) => {
  res.send('Protected Route');
});

// And also you can pass data from middleware to next middleware/controller also by attahching it with request

function newMiddleware(req, res, next) {
  req.foo = "bar" //Now you can access this foo variable in next function.
}
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan