• 注册
当前位置:代码四四五 > 数据库 >正文

使用 Express.js 和 MongoDB 进行简单的用户登录

该示例代码展示了如何使用 Express.js 和 MongoDB 创建一个基本的用户登录系统,包括注册、登录、注销和用户验证。

// 引入所需的包
const express = require('express');
const bodyParser = require('body-parser');
const session = require('express-session');
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const User = require('./models/User');

// 创建应用程序
const app = express();

// 中间件
app.use(bodyParser.urlencoded({ extended: true }));
app.use(session({
    secret: 'my secret key',
    resave: true,
    saveUninitialized: true
}));

// 连接到 MongoDB 数据库
mongoose.connect('mongodb://localhost/myapp', { useNewUrlParser: true });

// 注册路由
app.get('/register', (req, res) => {
    res.render('register');
});

app.post('/register', async (req, res) => {
    const { name, email, password } = req.body;
    const user = new User({ name, email, password });
    await user.save();
    req.session.user = user;
    res.redirect('/');
});

// 登录路由
app.get('/login', (req, res) => {
    res.render('login');
});

app.post('/login', async (req, res) => {
    const { email, password } = req.body;
    const user = await User.findOne({ email });
    if (!user) {
        res.render('login', { error: 'Invalid email or password.' });
        return;
    }
    const valid = await bcrypt.compare(password, user.password);
    if (!valid) {
        res.render('login', { error: 'Invalid email or password.' });
        return;
    }
    req.session.user = user;
    res.redirect('/');
});

// 注销路由
app.get('/logout', (req, res) => {
    req.session.destroy();
    res.redirect('/');
});

// 用户验证中间件
const requiresLogin = (req, res, next) => {
    if (req.session.user) {
        next();
    } else {
        res.redirect('/login');
    }
};

// 受保护的页面路由
app.get('/', requiresLogin, (req, res) => {
    res.send(`Welcome, ${req.session.user.name}!`);
});

// 启动服务器
app.listen(3000, () => {
    console.log('Server started on port 3000');
});

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 162202241@qq.com

最新评论
  • 郁聪
    2024-03-29 电脑端
    # 1楼
    express mongodb

    个人签名,ta还没设置签名

    拉黑 举报 打赏 回复
  • 屠博家
    2024-03-29 电脑端
    # 2楼
    express连接mongodb

    个人签名,ta还没设置签名

    拉黑 举报 打赏 回复
  • 边馥和
    2024-03-29 电脑端
    # 3楼
    js连接mongodb数据库

    个人签名,ta还没设置签名

    拉黑 举报 打赏 回复
  • 荣婷
    2024-03-29 电脑端
    # 4楼
    js操作mongodb

    个人签名,ta还没设置签名

    拉黑 举报 打赏 回复
  • 邢翰
    2024-03-29 电脑端
    # 5楼
    mongodb如何登录

    个人签名,ta还没设置签名

    拉黑 举报 打赏 回复
  • 赫连壮
    2024-03-29 电脑端
    # 6楼
    登录mongodb数据库

    个人签名,ta还没设置签名

    拉黑 举报 打赏 回复
  • 韶富
    2024-03-29 电脑端
    # 7楼
    mongo登录指定数据库

    个人签名,ta还没设置签名

    拉黑 举报 打赏 回复

欢迎您发表评论:

请登录之后再进行评论

登录