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}`); });
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}`); });
使用JSON Web Token(JWT)实现token认证
除了使用session来管理用户登录状态之外,还可以使用JSON Web Token(JWT)实现token认证。JWT是一种轻量、安全、灵活的身份验证协议。在该协议中,服务器生成一个包含用户信息的token,然后将该token返回给客户端。后续的请求都需要在HTTP头中携带该token。
使用JWT的好处在于它不需要在服务器上存储用户信息,而是将用户信息编码到token中,这样就减轻了服务器的存储压力。同时,由于token包含了用户信息,因此可以在客户端和服务器端之间轻易地传递用户身份信息。
要使用JWT,需要使用jsonwebtoken
库来实现查询操作,该库可以在node.js中工作和浏览器中工作。在使用jsonwebtoken
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}`); });
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!