📜  登录 Node.js(1)

📅  最后修改于: 2023-12-03 15:27:15.640000             🧑  作者: Mango

登录 Node.js

如果你是一个后端开发者或者对 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

其中,passportpassport-local 是与身份验证相关的包。

创建 Express 应用

使用 Express 创建一个简单的应用。

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

app.listen(3000, () => {
  console.log("Server listening on port 3000");
});

在浏览器中访问 http://localhost:3000,如果一切顺利,你应该看到 "Hello World!"。

配置 Passport.js

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 提供的一种身份验证策略,serializeUserdeserializeUser 函数用于在会话中存储和读取用户信息。此外,还应该在 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 提供了多种身份验证策略,我们可以选择最适合我们需求的来使用。

以上为本文内容,欢迎大家阅读学习!