档案管理系统身份认证功能从零开发落地实操全流程指南
前置准备
提前安装好以下环境,所有资源均直接提供可下载地址,无模糊引导:
- Node.js 18+:Windows直接下载安装包 https://nodejs.org/dist/v18.17.0/node-v18.17.0-x64.msi,Mac用户执行终端命令
brew install node@18,安装完成后打开终端输入node -v输出版本号即为成功 - MongoDB 5+:Windows直接下载安装包 https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-6.0.10.msi,默认安装完成后自动启动,端口为27017即可
- 代码编辑器:VS Code,下载地址 https://code.visualstudio.com/download
第一步:初始化项目与安装依赖
新建空白文件夹命名为archive-auth,打开终端进入该文件夹,依次执行以下命令:
执行完成后,在项目根目录依次创建以下文件/文件夹:config.js、app.js、models/User.js、middleware/auth.js
第二步:编写核心配置与认证中间件
1. 基础配置文件config.js
直接复制以下完整配置,生产环境替换对应参数即可:
``` module.exports = { // JWT签名密钥,生产环境必须更换为32位随机字符串 jwtSecret: 'archive_system_custom_auth_key_2024', // 登录令牌过期时间,可自行调整 jwtExpire: '7d', // MongoDB数据库连接地址 dbUrl: 'mongodb://localhost:27017/archive_manage_system' } ``` 注意:密钥不可泄露,生产环境必须更换示例值2. 用户数据模型models/User.js
该文件负责用户数据结构定义和密码加密,直接复制完整代码:
``` const mongoose = require('mongoose'); const bcrypt = require('bcryptjs'); const userSchema = new mongoose.Schema({ username: { type: String, required: true, unique: true }, password: { type: String, required: true }, role: { type: String, enum: ['admin', 'viewer'], default: 'viewer' } }); // 保存用户前自动加密密码,无需手动处理 userSchema.pre('save', async function(next) { if (!this.isModified('password')) return next(); this.password = await bcrypt.hash(this.password, 10); next(); }); // 明文密码和加密密码校验方法 userSchema.methods.comparePassword = async function(plainPassword) { return bcrypt.compare(plainPassword, this.password); } module.exports = mongoose.model('User', userSchema); ```3. 认证拦截中间件middleware/auth.js

这是认证功能的核心,所有需要权限的接口都要经过该中间件校验,完整代码:
``` const jwt = require('jsonwebtoken'); const { jwtSecret } = require('../config'); module.exports = (req, res, next) => { // 从请求头提取令牌 const token = req.headers.authorization?.split(' ')[1]; if (!token) { return res.status(401).json({ code: 401, msg: '未登录,无访问权限' }); } try { // 验证令牌合法性 const decoded = jwt.verify(token, jwtSecret); req.user = decoded; next(); } catch (err) { return res.status(401).json({ code: 401, msg: '令牌失效,请重新登录' }); } } ```第三步:编写登录与认证接口
打开入口文件app.js,直接复制以下完整可运行代码:
第四步:启动验证功能
在项目根目录终端输入命令node app.js,按照以下步骤验证:
- 看到终端输出「数据库连接成功」「初始管理员账号已生成」「服务已启动」即为启动成功
- 调用登录接口:请求方式POST,地址
http://localhost:3000/api/login,请求体JSON为{"username":"admin","password":"admin123456"},返回token即为登录成功 - 调用认证测试接口:请求方式GET,地址
http://localhost:3000/api/auth/test,请求头添加Authorization: Bearer 你刚才获取到的token,返回用户信息即为认证功能生效
接入业务系统的注意事项
所有访问档案数据的接口,都需要添加认证中间件拦截,示例如下:
``` // 示例:需要认证的档案列表接口 app.get('/api/archive/list', authMiddleware, (req, res) => { // 在这里写你的档案查询业务逻辑即可,req.user中存储当前登录用户信息 res.json({ code: 200, data: [] }); }); ```如果需要权限控制,只允许管理员访问某个接口,添加一行判断即可:
``` if (req.user.role !== 'admin') { return res.status(403).json({ code: 403, msg: '无权限访问该资源' }); } ```生产环境部署必须修改两个配置:1. 将config.js中的jwtSecret替换为32位以上随机字符串;2. 将dbUrl替换为带密码的正式数据库地址,格式为mongodb://数据库用户名:数据库密码@服务器IP:27017/库名。修改完成后即可直接部署使用,整个流程零门槛,所有代码可直接复制运行。