express-session模块的简单使用
程序员文章站
2022-03-14 22:54:09
...
对应英文网站:https://www.npmjs.com/package/express-session
npm下载:(依赖express框架)
npm install express express-session
配置参数
参数 | 作用 |
---|---|
secret | 一个字符串,作为服务器端生成session签名 |
name | 返回客户端的key名称,默认是connect.sid,可以自行设置 |
resave | 强制保存session 即使没变化 默认true ,建议改为false |
saveUninitialized | 当新建强制将未初始化的 session 存储。 默认值是true 建议设置成true,建议添加, |
cookie | 设置返回到前端key的属性,常用属性如下:默认时:{path:’/’,httpOnly:true,secure:false,maxAge:null} |
path:路径 | |
httpOnly:只允许http请求 | |
maxAge: 过期时间 单位毫秒 | |
secure:默认false ,设置为true 时 https这样的情况才可以访问cookie | |
rolling | 在每次请求时强行设置cookie,这将重置cooKie过期时间,默认false |
简单服务器端demo
const express = require('express')
const path = require('path')
const formidable = require('formidable')
const session = require('express-session')
const app = express()
//配置session
app.use(
session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: false,
})
)
app.use(express.static(path.join(__dirname, 'public')))
app.post('/login', (req, res) => {
//创建表单解析对象
var form = formidable.IncomingForm()
//解析表单
form.parse(req, (err, fields, file) => {
//接收客户端传递过来的用户名与密码
const { username, password } = fields
//用户名密码比对
if (username == 'itcast' && password == '123456') {
//设置session
req.session.isLogin = true
res.send({ message: '登录成功' })
} else {
res.send({ message: '登录失败,用户名或密码错误' })
}
})
})
app.get('/checkLogin',(req,res)=>{
//判断用户是否处于登录状态
//获取session
if(req.session.isLogin){
res.send{message:'处于登录状态'}
}else{
res.send({message:'处于未登录状态'})
}
})
app.listen(3001)
console.log('服务器启用成功')