📅  最后修改于: 2023-12-03 15:27:15.640000             🧑  作者: Mango
如果你是一个后端开发者或者对 JavaScript 的运行时有一定的了解,那么你一定听过 Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,它能够让 JavaScript 也能够在服务端运行。
在 Node.js 中,登录是一个非常基础的功能。本文将介绍如何在 Node.js 中实现登录功能。我们将使用 Express 框架和 Passport.js 这个强大的身份验证库。
在开始之前,需要先安装 Node.js 和 npm。之后,我们使用 npm 安装 Express 和 Passport.js。
npm install express passport passport-local
其中,passport
和 passport-local
是与身份验证相关的包。
使用 Express 创建一个简单的应用。
const express = require("express");
const app = express();
app.listen(3000, () => {
console.log("Server listening on port 3000");
});
在浏览器中访问 http://localhost:3000
,如果一切顺利,你应该看到 "Hello World!"。
在 app.js
文件中添加以下代码。
const passport = require("passport");
const LocalStrategy = require("passport-local").Strategy;
passport.use(
new LocalStrategy(function (username, password, done) {
// 这里写身份验证的代码
done(null, false);
})
);
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (user, done) {
done(null, user);
});
app.use(passport.initialize());
app.use(passport.session());
上面的代码是配置 passport
的一个基础版。其中,LocalStrategy
是 Passport.js 提供的一种身份验证策略,serializeUser
和 deserializeUser
函数用于在会话中存储和读取用户信息。此外,还应该在 app.js
文件中添加以下代码,表示可以解析表单数据。
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
接下来,我们创建登录页面的路由和视图。
在 views
文件夹中创建 login.ejs
文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Login</title>
</head>
<body>
<form method="POST" action="/login">
<div>
<label>Username:</label>
<input type="text" name="username" />
</div>
<div>
<label>Password:</label>
<input type="password" name="password" />
</div>
<div>
<button type="submit">Login</button>
</div>
</form>
</body>
</html>
在 app.js
文件中添加以下路由。
app.get("/login", (req, res) => {
res.render("login");
});
app.post(
"/login",
passport.authenticate("local", {
successRedirect: "/",
failureRedirect: "/login",
})
);
现在,在浏览器中访问 http://localhost:3000/login
,你应该可以看到一个简单的登录页面。
我们来完成身份验证的功能。在上面的 passport.use
函数中加入身份验证代码。
passport.use(
new LocalStrategy(function (username, password, done) {
if (username === "admin" && password === "password") {
return done(null, { username: "admin" });
} else {
return done(null, false);
}
})
);
现在,只有在用户名为 "admin" 而密码为 "password" 时,才会验证通过。此时,访问 http://localhost:3000/login
,输入正确的用户名和密码,即可登录成功并跳转到首页。否则会返回登录页面。
通过本文,我们已经成功地创建了一个简单的 Node.js 应用程序,实现了用户的登录功能。虽然这只是一个基础版,但我们可以在此基础上扩展更高级的功能。Passport.js 提供了多种身份验证策略,我们可以选择最适合我们需求的来使用。
以上为本文内容,欢迎大家阅读学习!