express+session实现简易身份认证
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,环境初始化首先,初始化项目express -e然后,安装依赖。npm install接着,安装session相关的包。npm install --save express-session sessio
千家信息网最后更新 2026年10月31日express+session实现简易身份认证
环境初始化
首先,初始化项目
express -e
然后,安装依赖。
npm install
接着,安装session相关的包。
npm install --save express-session session-file-store
session相关配置
配置如下,并不复杂,可以见代码注释,或者参考官方文档。
var express = require('express');var app = express();var session = require('express-session');var FileStore = require('session-file-store')(session);var identityKey = 'skey';app.use(session({ name: identityKey, secret: 'chyingp', // 用来对session id相关的cookie进行签名 store: new FileStore(), // 本地存储session(文本文件,也可以选择其他store,比如redis的) saveUninitialized: false, // 是否自动保存未初始化的会话,建议false resave: false, // 是否每次都重新保存会话,建议false cookie: { maxAge: 10 * 1000 // 有效期,单位是毫秒 }}));实现登录/登出接口
创建测试账户数据
首先,在本地创建个文件,来保存可用于登录的账户信息,避免创建链接数据库的繁琐。
// users.jsmodule.exports = { items: [ {name: 'chyingp', password: '123456'} ]};登录、登出接口实现
实现登录、登出接口,其中:
登录:如果用户存在,则通过
req.regenerate创建session,保存到本地,并通过Set-Cookie将session id保存到用户侧;登出:销毁session,并清除cookie;
var users = require('./users').items;var findUser = function(name, password){ return users.find(function(item){ return item.name === name && item.password === password; });};// 登录接口app.post('/login', function(req, res, next){ var sess = req.session; var user = findUser(req.body.name, req.body.password); if(user){ req.session.regenerate(function(err) { if(err){ return res.json({ret_code: 2, ret_msg: '登录失败'}); } req.session.loginUser = user.name; res.json({ret_code: 0, ret_msg: '登录成功'}); }); }else{ res.json({ret_code: 1, ret_msg: '账号或密码错误'}); } });// 退出登录app.get('/logout', function(req, res, next){ // 备注:这里用的 session-file-store 在destroy 方法里,并没有销毁cookie // 所以客户端的 cookie 还是存在,导致的问题 --> 退出登陆后,服务端检测到cookie // 然后去查找对应的 session 文件,报错 // session-file-store 本身的bug req.session.destroy(function(err) { if(err){ res.json({ret_code: 2, ret_msg: '退出登录失败'}); return; } // req.session.loginUser = null; res.clearCookie(identityKey); res.redirect('/'); });});登录态判断
用户访问 http://127.0.0.1:3000 时,判断用户是否登录,如果是,则调到用户详情界面(简陋无比);如果没有登录,则跳到登录界面;
app.get('/', function(req, res, next){ var sess = req.session; var loginUser = sess.loginUser; var isLogined = !!loginUser; res.render('index', { isLogined: isLogined, name: loginUser || '' });});UI界面
最后,看下登录、登出UI相关的代码。
<% } %>会话管理 会话管理
<% if(isLogined){ %>当前登录用户:<%= name %>,退出登陆
<% }else{ %>
登录
用户
接口
文件
界面
代码
建议
数据
账户
登陆
管理
配置
复杂
有效
简陋
成功
繁琐
信息
单位
备注
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
哈尔滨大商圈互联网科技有限公司
互联网科技活动banner
科技信息互联网
北京互联网科技
互联网金融与金融科技
深圳互联网科技公司
互联网的科技创新
互联网科技论坛
剑昆互联网络科技有限公司临桂
欧洲十大科技互联网公司
广州新华互联网科技学校电竞方面
互联网数据科技专业
江苏互联网科技小贷
抖集互联网科技技术咨询
吉林省码上互联网科技电话
艺电能源互联网科技有限公司招聘
互联网科技职业技能培训学校
米泉互联网科技专业怎么样
马化腾互联网科技教学
科技互联网企业在行动
A股互联网金融科技公司
互联网 卓越科技
互联网科技缩写
易通互联网络科技有限公司
润盈互联网科技
美国互联网前沿科技
互联网科技产业特征
广州千川互联网科技有限公司
上海旺乐尼互联网科技有限公司
互联网 科技节活动 微视频大赛