So melden Sie sich mit nodejs am Backend an

WBOY
Freigeben: 2023-05-23 13:02:39
Original
505 Leute haben es durchsucht

Als Entwicklungstool zur Implementierung einer serverseitigen JavaScript-Laufzeitumgebung wurde Node.js nach und nach weit verbreitet. Node.js bietet eine Möglichkeit, Netzwerkanwendungen ereignisgesteuert zu schreiben, sodass Entwickler problemlos Server einrichten und webbasierte Anwendungen erstellen können.

In vielen Webanwendungen ist die Benutzeranmeldung ein sehr wichtiger Bestandteil. Administratoren müssen sich beim Backend-Verwaltungssystem anmelden, um Daten und Geschäfte zu verwalten. Daher ist es in Node.js erforderlich, eine grundlegende Anmeldeauthentifizierung zu implementieren. Dieser Prozess erfordert eine Reihe von Vorgängen wie die Authentifizierung der Benutzeridentität und die Rückrufverwaltung.

In diesem Artikel werden einige gängige Anmeldeauthentifizierungsmethoden in Node.js vorgestellt, darunter die Verwendung von Middleware, die Verwendung der Sitzungsverwaltung und die Verwendung von JSON Web Token (JWT) zur Implementierung der Tokenauthentifizierung.

Middleware verwenden

In Node.js ist Middleware ein wichtiges Konzept, das HTTP-Anfragen verarbeitet und die Änderung der Antwort sowie die Entscheidung, die Anfrage an die nächste Middleware weiterzuleiten, ermöglicht. Daher kann die Implementierung der Anmeldefunktion auch über Middleware erfolgen.

Der größte Vorteil der Verwendung von Middleware besteht darin, dass sie die Lesbarkeit und Wartbarkeit des Codes verbessern kann. Gleichzeitig können wiederholte Codemodule reduziert werden.

Codebeispiel:

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}`);
});
Nach dem Login kopieren

Im obigen Code verwenden wir die express-Middleware zur Verarbeitung von HTTP-Anfragen und -Antworten und die express-session-Middleware für die Sitzungsverwaltung des Benutzers . express中间件来处理HTTP请求和响应,并使用express-session中间件对用户会话进行管理。

使用session会话管理

在Web开发实践中,session是指在服务器端存储信息的一种机制。它以key-value的形式存储,key是sessionID,而value是一个JSON格式的对象,可以存储用户的身份信息、权限信息等。

Node.js中实现基本的会话管理需要使用express-session中间件。在使用express-session中间件时,需要设置一个参数secret用于签名,这样可以保证session的安全性。同时,需要设置resave参数和saveUnitialized参数为false,这可以避免session的重写和保存未初始化的session。

代码示例:

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}`);
});
Nach dem Login kopieren

使用JSON Web Token(JWT)实现token认证

除了使用session来管理用户登录状态之外,还可以使用JSON Web Token(JWT)实现token认证。JWT是一种轻量、安全、灵活的身份验证协议。在该协议中,服务器生成一个包含用户信息的token,然后将该token返回给客户端。后续的请求都需要在HTTP头中携带该token。

使用JWT的好处在于它不需要在服务器上存储用户信息,而是将用户信息编码到token中,这样就减轻了服务器的存储压力。同时,由于token包含了用户信息,因此可以在客户端和服务器端之间轻易地传递用户身份信息。

要使用JWT,需要使用jsonwebtoken库来实现查询操作,该库可以在node.js中工作和浏览器中工作。在使用jsonwebtoken

Sitzungsverwaltung verwenden

In der Webentwicklungspraxis bezieht sich Sitzung auf einen Mechanismus zum Speichern von Informationen auf der Serverseite. Es wird in Form eines Schlüsselwerts gespeichert. Der Schlüssel ist die Sitzungs-ID und der Wert ist ein Objekt im JSON-Format, das die Identitätsinformationen, Berechtigungsinformationen usw. des Benutzers speichern kann.

Um die grundlegende Sitzungsverwaltung in Node.js zu implementieren, müssen Sie die Middleware express-session verwenden. Wenn Sie die Middleware express-session verwenden, müssen Sie einen Parameter secret für die Signatur festlegen, der die Sicherheit der Sitzung gewährleisten kann. Gleichzeitig müssen Sie die Parameter resave und saveUnitialized auf false setzen, um das Umschreiben von Sitzungen und das Speichern nicht initialisierter Sitzungen zu vermeiden. 🎜🎜Codebeispiel: 🎜
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}`);
});
Nach dem Login kopieren
🎜Verwenden Sie JSON Web Token (JWT), um die Token-Authentifizierung zu implementieren🎜🎜Zusätzlich zur Verwendung der Sitzung zum Verwalten des Benutzeranmeldestatus können Sie auch JSON Web Token (JWT) verwenden, um die Token-Authentifizierung zu implementieren. JWT ist ein leichtes, sicheres und flexibles Authentifizierungsprotokoll. Bei diesem Protokoll generiert der Server ein Token mit Benutzerinformationen und gibt das Token dann an den Client zurück. Nachfolgende Anfragen müssen das Token im HTTP-Header enthalten. 🎜🎜Der Vorteil der Verwendung von JWT besteht darin, dass Benutzerinformationen nicht auf dem Server gespeichert werden müssen, sondern die Benutzerinformationen im Token codiert werden, wodurch der Speicherdruck auf dem Server verringert wird. Da das Token Benutzerinformationen enthält, können gleichzeitig Benutzeridentitätsinformationen problemlos zwischen Client und Server übertragen werden. 🎜🎜Um JWT zu verwenden, müssen Sie die Bibliothek jsonwebtoken verwenden, um Abfragevorgänge zu implementieren. Diese Bibliothek kann in node.js und im Browser funktionieren. Wenn Sie jsonwebtoken verwenden, müssen Sie einen Schlüssel und einen Gültigkeitszeitraum festlegen, um sicherzustellen, dass das generierte Token authentifiziert und akzeptiert werden kann. 🎜🎜Codebeispiel: 🎜rrreee🎜Mit der oben genannten Methode können wir eine grundlegende Anmeldeauthentifizierungsfunktion in Node.js implementieren. Basierend auf spezifischen Geschäftsanforderungen können verschiedene Lösungen ausgewählt werden. Gleichzeitig müssen Sie auch auf die Sicherheit und Stabilität der Anmeldung achten, um sicherzustellen, dass keine Lücken entstehen und Benutzerdaten beschädigt werden. 🎜

Das obige ist der detaillierte Inhalt vonSo melden Sie sich mit nodejs am Backend an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage