博客
关于我
Node.js基于Express框架搭建一个简单的注册登录Web功能
阅读量:792 次
发布时间:2023-02-16

本文共 3671 字,大约阅读时间需要 12 分钟。

Node.js Express项目—基于Mongoose的注册登录功能实现

项目初始化

首先,我们需要初始化一个Node.js Express项目。通过以下命令可以快速创建项目框架:

express -e test

安装完成后,进入项目目录并执行:

npm install

运行项目:

npm start

初始化项目后,项目结构如下:

  • app.js:主应用文件
  • package.json:项目依赖管理文件
  • bin:启动文件
  • public:静态资源目录
  • routes:路由配置目录
  • views:视图文件目录

项目依赖

项目依赖项如下:

{  "dependencies": {    "body-parser": "~1.12.0",    "cookie-parser": "~1.3.4",    "debug": "~2.1.1",    "ejs": "~2.3.1",    "express": "~4.12.2",    "mongoose": "~5.1.0",    "morgan": "~1.5.1",    "serve-favicon": "~2.2.0"  }}

数据库配置

使用Mongoose操作MongoDB数据库。首先创建database文件夹下的dbHandel.jsmodels.js

// models.jsmodule.exports = {  user: {    name: { type: String, required: true },    password: { type: String, required: true }  }};
// dbHandel.jsvar mongoose = require('mongoose');mongoose.connect('mongodb://localhost:27017/nodedb');module.exports = {  getModel: function(type) {    return mongoose.model(type);  }};

app.js中添加数据库连接:

var mongoose = require('mongoose');mongoose.connect('mongodb://localhost:27017/nodedb');global.db = mongoose;

登录注册功能

1. 路由配置

routes/index.js中添加路由:

var express = require('express');var router = express.Router();var User = global.dbHandel.getModel('user');router.get('/', function(req, res) {  res.render('index', { title: '欢迎' });});router.get('/login', function(req, res) {  res.render('login', { title: '用户登录' });});router.get('/register', function(req, res) {  res.render('register', { title: '用户注册' });});router.get('/home', function(req, res) {  if (!req.session.user) {    req.session.error = '请先登录';    res.redirect('/login');  }  res.render('home', { title: '主页' });});router.get('/logout', function(req, res) {  req.session.user = null;  req.session.error = null;  res.redirect('/');});module.exports = router;

2. 登录处理

routes/index.js中添加登录逻辑:

router.post('/login', function(req, res) {  var uname = req.body.uname;  var upwd = req.body.upwd;  User.findOne({ name: uname }, function(err, user) {    if (err) {      res.send(500);    } else if (!user) {      req.session.error = '用户名不存在';      res.send(404);    } else if (upwd !== user.password) {      req.session.error = '密码错误';      res.send(404);    } else {      req.session.user = user;      res.send(200);    }  });});

3. 注册处理

routes/index.js中添加注册逻辑:

router.post('/register', function(req, res) {  var uname = req.body.uname;  var upwd = req.body.upwd;  User.findOne({ name: uname }, function(err, user) {    if (err) {      req.session.error = '网络错误';      res.send(500);    } else if (user) {      req.session.error = '用户名已存在';      res.send(500);    } else {      User.create({        name: uname,        password: upwd      }, function(err, user) {        if (err) {          req.session.error = '注册失败';          res.send(500);        } else {          req.session.error = '注册成功';          res.send(200);        }      });    }  });});

模板引擎配置

app.js中配置EJS模板引擎:

var express = require('express');var path = require('path');var favicon = require('serve-favicon');var logger = require('morgan');var cookieParser = require('cookie-parser');var bodyParser = require('body-parser');var session = require('express-session');var db = mongoose.connect('mongodb://localhost:27017/nodedb');app.use(session({  secret: 'your secret key',  resave: false,  saveUninitialized: true,  cookie: {    secure: true,    maxAge: 1000 * 60 * 60  }}));

测试运行

  • 启动MongoDB数据库服务:

    mongod --dbpath=/data/db
  • 启动Node.js项目:

    npm start
  • 访问项目:

    • 登录页面:http://localhost:3000/login
    • 注册页面:http://localhost:3000/register
    • 主页:http://localhost:3000/home
  • 注意事项

    • 确保MongoDB服务已运行。

    • 如果出现MongoDB连接错误,检查数据库地址和端口是否正确。

    • 如果安装依赖失败,尝试使用:

      npm install bson

      或者更新依赖:

      npm update

    通过以上步骤,一个简单的注册登录功能已经完成。项目代码已发布至GitHub:

    https://github.com/imwtr/nodejs_express_login_register

    转载地址:http://rpjfk.baihongyu.com/

    你可能感兴趣的文章
    nginx总结及使用Docker创建nginx教程
    查看>>
    nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:128
    查看>>
    nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in usrlocalnginxconfnginx.conf128
    查看>>
    nginx日志分割并定期删除
    查看>>
    Nginx日志分析系统---ElasticStack(ELK)工作笔记001
    查看>>
    Nginx映射本地json文件,配置解决浏览器跨域问题,提供前端get请求模拟数据
    查看>>
    nginx最最最详细教程来了
    查看>>
    Nginx服务器---正向代理
    查看>>
    Nginx服务器上安装SSL证书
    查看>>
    Nginx服务器基本配置
    查看>>
    Nginx服务器的安装
    查看>>
    Nginx模块 ngx_http_limit_conn_module 限制连接数
    查看>>
    Nginx模块 ngx_http_limit_req_module 限制请求速率
    查看>>
    nginx添加模块与https支持
    查看>>
    Nginx用户认证
    查看>>
    Nginx的location匹配规则的关键问题详解
    查看>>
    Nginx的Rewrite正则表达式,匹配非某单词
    查看>>
    Nginx的使用总结(一)
    查看>>
    Nginx的使用总结(三)
    查看>>
    Nginx的使用总结(二)
    查看>>