21xrx.com
2024-09-19 10:04:21 Thursday
登录
文章检索 我的文章 写文章
Node.js 实现用户登录功能
2023-07-01 10:23:21 深夜i     --     --
Node js 用户登录功能 身份验证 数据库 Web 应用程序

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它通过事件驱动和非阻塞 I/O 模型提高了应用程序的性能和可扩展性。在 Web 应用程序开发中,用户登录是一个基本的功能,这篇文章将介绍如何使用 Node.js 实现用户登录功能。

首先,我们需要使用 Express 框架来搭建一个简单的 Web 应用程序。Express 是 Node.js 简洁而灵活的 Web 应用程序框架,可以帮助我们快速构建 Web 应用程序。在终端中输入以下命令来创建新的 Express 应用程序:


$ npm install -g express-generator

$ express myapp

接下来,我们需要使用 MongoDB 数据库来存储用户登录信息。MongoDB 是一个基于文档的 NoSQL 数据库,它的灵活性和可扩展性可以满足各种不同规模和类型的应用程序的需求。在终端中输入以下命令来创建新的 MongoDB 数据库:


$ mkdir data

$ mongod --dbpath=data

然后,我们需要使用 Mongoose 模块来连接 MongoDB 数据库并定义用户模型。Mongoose 是一个优秀的 MongoDB 数据库管理工具,可以帮助我们更方便地与 MongoDB 数据库进行交互。在终端中输入以下命令来安装 Mongoose 模块:


$ npm install mongoose

接下来,我们需要创建用户模型并在应用程序中使用它。在 models 目录下创建 user.js 文件,并输入以下代码:


var mongoose = require('mongoose');

var Schema = mongoose.Schema;

var userSchema = new Schema({

  username: required: true ,

  password: type: String

});

var User = mongoose.model('User', userSchema);

module.exports = User;

然后,在 app.js 文件中添加以下代码:


var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/myapp');

var User = require('./models/user');

现在,我们可以创建一个用户并将其保存到数据库中。在 routes 目录下创建 users.js 文件,并输入以下代码:


var express = require('express');

var router = express.Router();

var User = require('../models/user');

router.get('/signup', function(req, res, next) {

  res.render('signup', { title: 'Sign up' });

});

router.post('/signup', function(req, res, next) {

  var user = new User(

    password: req.body.password

  );

  user.save(function(err) {

    if (err) return next(err);

    res.redirect('/');

  });

});

module.exports = router;

现在,我们可以使用浏览器中的 signup 页面来创建新用户。访问 http://localhost:3000/users/signup,输入用户名和密码并单击“注册”按钮,然后会将用户保存到数据库中。

接下来,我们需要使用 Passport 模块来处理用户登录和身份验证。Passport 是一个易于使用和高度可定制的身份验证中间件,可以帮助我们快速而安全地完成登录和身份验证操作。在终端中输入以下命令来安装 Passport 模块:


$ npm install passport passport-local passport-local-mongoose express-session

然后,在 app.js 文件中添加以下代码:


var passport = require('passport');

var LocalStrategy = require('passport-local').Strategy;

var User = require('./models/user');

passport.use(new LocalStrategy(User.authenticate()));

passport.serializeUser(User.serializeUser());

passport.deserializeUser(User.deserializeUser());

app.use(require('express-session')(

  saveUninitialized: false

));

app.use(passport.initialize());

app.use(passport.session());

app.use(function(req, res, next) {

  res.locals.currentUser = req.user;

  next();

});

然后,在 routes 目录下创建 index.js 文件,并输入以下代码:


var express = require('express');

var router = express.Router();

var passport = require('passport');

router.get('/', function(req, res, next) {

  res.render('index', { title: 'Home' });

});

router.get('/login', function(req, res, next) {

  res.render('login', { title: 'Log in' });

});

router.post('/login', passport.authenticate('local',

  failureRedirect: '/login'

));

router.get('/logout', function(req, res, next) {

  req.logout();

  res.redirect('/');

});

module.exports = router;

然后,在 views 目录下创建 login.ejs 文件,并输入以下代码:


<h1><%= title %></h1>

<form method="POST" action="/login">

 <div>

  <label>用户名:</label>

  <input type="text" name="username" />

 </div>

 <div>

  <label>密码:</label>

  <input type="password" name="password" />

 </div>

 <div>

  <input type="submit" value="登录" />

 </div>

</form>

现在,我们可以使用浏览器中的登录页面来测试用户登录功能。访问 http://localhost:3000/login,输入之前创建的用户名和密码并单击“登录”按钮,然后会将您重定向到主页,并显示您已登录。当您尝试访问其他需要登录的页面时,您将被重定向到登录页面。

通过本文的介绍,相信您已经学会了如何使用 Node.js 实现用户登录功能。这个过程中涉及到了 Express、MongoDB、Mongoose、Passport 等常用的 Web 开发工具和技术。如果您正在进行 Web 应用程序的开发,那么这些工具和技术一定会为您提供帮助。祝愉快编码!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复