nodejs个人博客开发第七步 后台登陆

下面我将详细讲解“nodejs个人博客开发第七步 后台登陆”的完整攻略。

1. 确定需求和设计页面

在开始开发后台登录功能之前,需要先确定需求和设计登录页面。在设计登录页面时,需要考虑以下几个方面:

  • 登录页面应该有输入账号和密码的表单,以及登录按钮。
  • 检查用户输入的账号和密码是否合法,如果不合法,则需要提示用户重新输入。
  • 如果用户输入的账号和密码正确,则跳转到后台管理主页。

在确定了以上需求之后,可以开始设计登录页面,并通过HTML和CSS进行页面的实现。

2. 开发后台登录功能

在完成页面设计之后,可以开始开发后台登录功能。开发后台登录需要用到以下技术:

  • Node.js:作为后端语言,用于编写后台登录的逻辑代码。
  • Express:作为Web框架,用于管理前端页面,并提供路由功能。
  • MongoDB:作为数据库,用于保存登录信息。

下面以示例代码的形式说明如何使用Node.js和Express开发后台登录功能。

2.1. 引入必要的包和模块

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);

const app = express();

在这段代码中,我们引入了Express、body-parser、mongoose和bcrypt等必要的包和模块,并创建了一个Express实例。

2.2. 连接数据库

mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true, useUnifiedTopology: true })
    .then(() => app.listen(3000, () => console.log('Server started on port 3000')))
    .catch(err => console.log(err));

在这段代码中,我们使用mongoose.connect连接到MongoDB数据库。连接成功后,启动服务器,并在控制台打印“Server started on port 3000”字样。

2.3. 创建数据模型

const userSchema = new mongoose.Schema({
    username: String,
    password: String
});

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

在这段代码中,我们创建了一个数据模型userSchema,包含username和password两个属性,然后将它们传入mongoose.model方法中,创建出User数据模型。

2.4. 配置session和session-store

app.use(session({
    secret: 'my-secret',
    resave: false,
    saveUninitialized: true,
    store: new MongoStore({
        mongooseConnection: mongoose.connection
    })
}));

在这段代码中,我们使用express-session和connect-mongo包来配置session和session-store。其中,secret用于对session数据进行加密,store指定使用MongoDB来保存session数据。

2.5. 配置路由

app.use(bodyParser.urlencoded({ extended: true }));

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

app.post('/login', async (req, res) => {
    const { username, password } = req.body;

    const user = await User.findOne({ username });

    if (!user) {
        return res.redirect('/login');
    }

    const isValid = await bcrypt.compare(password, user.password);

    if (!isValid) {
        return res.redirect('/login');
    }

    req.session.user = user;

    res.redirect('/admin');
});

在这段代码中,我们使用app.use和bodyParser来配置请求体的解析方式,然后使用app.get和app.post方法来定义路由。其中,/login路由用于显示登录页面,/login POST路由用于实现登录逻辑。

2.6. 编写页面和样式

在这一步中,我们需要根据需求设计出登录页面,并使用HTML和CSS来进行样式的设置。

下面是一段用于实现多种视口的响应式界面的CSS代码示例:

@media only screen and (max-device-width: 600px) {
    #login__container {
        width: 100%;
        height: calc(100vh - 60px);
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
    }

    #login__title {
        margin-bottom: 20px;
    }
}

@media only screen and (min-device-width: 601px) and (max-device-width: 1280px) {
    #login__container {
        width: 100%;
        height: calc(100vh - 60px);
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
    }

    #login__title {
        margin-bottom: 20px;
    }
}

@media only screen and (min-device-width: 1281px) {
    #login__container {
        width: 400px;
        height: 400px;
        margin: auto;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
    }

    #login__title {
        margin-bottom: 20px;
    }
}

2.7. 用户验证和密码加密

在这一步中,我们使用bcrypt来对用户输入的密码进行加密,并使用findOne方法来查询数据库中是否存在对应的用户。如果数据库中存在对应的用户,则说明用户名和密码都正确,可以成功登录。

const user = await User.findOne({ username });

if (!user) {
    return res.redirect('/login');
}

const isValid = await bcrypt.compare(password, user.password);

if (!isValid) {
    return res.redirect('/login');
}

req.session.user = user;

res.redirect('/admin');

2.8. 检查登录状态

在后台管理主页中,需要检查用户是否已经登录。如果用户已经登录,则可以显示相应的管理内容;如果用户没有登录,则需要跳转到登录页面。

app.get('/admin', (req, res) => {
    if (!req.session.user) {
        return res.redirect('/login');
    }

    res.render('admin', { user: req.session.user });
});

在这一步中,我们使用req.session.user来判断用户是否已经登录。

3. 总结

以上就是“nodejs个人博客开发第七步 后台登陆”的完整攻略。在开发后台登录功能时,需要注意保护用户的账号和密码安全,使用bcrypt等加密技术保证用户的密码不会被窃取。同时,在使用用户登录状态时,需要使用session等会话控制技术进行管理,以保证用户的安全和隐私。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs个人博客开发第七步 后台登陆 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决

    针对“VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误”的解决,可以按以下步骤进行: 问题分析 白屏报错 SCRIPT1002: 语法错误,是IE11对于语法不支持的情况下的报错信息。VUE项目在IE11中常遇到此类问题,通常是由于ES6语法不被IE11所支持而导致。因此,我们需要对VUE项目中涉及到的ES6语法进行转换或降级。 解决方案 安…

    node js 2023年6月8日
    00
  • 前端必会的轻量打包工具gulp使用详解

    前端必会的轻量打包工具 gulp 使用详解 什么是 gulp? Gulp是前端打包工具之一,使用它可以自动化执行重复的任务,如文件压缩、文件合并,甚至是将代码编译为可在现代浏览器上运行的 JavaScript。 与其他打包工具相比,Gulp 的特点是学习成本低,易于上手。它采用“代码优于配置”的思想,大量使用 JavaScript 代码来定义任务,方便程序员…

    node js 2023年6月8日
    00
  • Node登录权限验证token验证实现的方法示例

    Node登录权限验证token验证是一种常用的用户认证方式。下面是实现这种验证的方法示例: 1. 生成Token 在编写代码之前,需要首先使用node.js的jsonwebtoken模块生成一个Token字符串。示例代码如下: const jwt = require(‘jsonwebtoken’); // 生成Token的函数 function genera…

    node js 2023年6月8日
    00
  • Node.js使用多进程提高任务执行效率

    当需要运行一些涉及CPU密集型的任务时,例如文件处理和数据分析,使用多线程或多进程可以大大提高程序的执行效率。Node.js的Child Process模块可以帮助我们使用多进程来执行耗时的任务。 下面是使用Node.js多进程的攻略: 准备工作 在开始使用Node.js的Child Process模块之前,你需要先了解以下几个概念: 进程(Process)…

    node js 2023年6月8日
    00
  • 浅谈Node新版本13.2.0正式支持ES Modules特性

    现在我来为您详细讲解“浅谈Node新版本13.2.0正式支持ES Modules特性”的完整攻略。 什么是ES Modules特性 ES Modules是JavaScript的模块化规范,它使得在网页开发中使用JavaScript进行模块化开发成为了可能。ES Modules的出现,主要是为了解决CommonJS和AMD等其他模块规范的一些缺陷,如全局变量的…

    node js 2023年6月8日
    00
  • 简单聊一聊Vue3组件更新过程

    下面是详细讲解“简单聊一聊Vue3组件更新过程”的完整攻略: Vue3组件更新过程 在Vue3中,组件更新过程主要分为以下几个步骤: 接收新的props数据 执行render函数生成新的Virtual DOM节点 和旧的Virtual DOM节点进行比对,找出需要更新的节点 生成新的真实DOM节点并渲染到页面中 下面详细讲解一下每一个步骤。 接收新的prop…

    node js 2023年6月8日
    00
  • Ajax 的初步实现(使用vscode+node.js+express框架)

    下面是详细讲解“Ajax 的初步实现(使用vscode+node.js+express框架)”的完整攻略: 1. 简介 Ajax (Asynchronous JavaScript and XML) 是在不需要重新加载整个页面的情况下,能够更新部分页面的技术。本篇教程将介绍如何使用 vscode、node.js 和 express 框架实现 Ajax 功能。 …

    node js 2023年6月8日
    00
  • node.js读取Excel数据(下载图片)的方法示例

    node.js读取Excel数据(下载图片)的方法示例 这篇文章将介绍如何使用Node.js来读取Excel数据和下载Excel中的图片。我们将使用node-xlsx模块来处理Excel数据,使用request模块下载图片。 步骤一:安装依赖 我们需要安装node-xlsx和request模块来处理Excel数据和下载图片。从命令行安装它们: npm ins…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部