Session持久化
session的使用以及持久化
实现方式
通过 express-session 对node-session进行管理
一般常用场景都是身份标识以及登陆操作
实现步骤
安装express-session及session持久化中间件
1 | npm install express-session -S |
session持久化插件安装说明
- mac、linux平台使用
session-file-store
1
npm install session-file-store
- win平台使用
nedb-session-store
1
npm install nedb-session-store
- mac、linux平台使用
导入及创建中间件
OS X
1
2
3
4
5
6
7
8const session = require("express-session");
const FileStore = require('session-file-store')(session);
// 创建 session 中间件
const sessionMiddleware = session({
store:new FileStore(),//数据持久化方式,这里表示本地文件存储
secret: 'keyboard cat', //加密key 可以随意书写
cookie: { maxAge: 60000 }//两次请求的时间差 即超过这个时间再去访问 session就会失效
})Windows
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15var session = require("express-session")
var NedbStore = require('nedb-session-store')( session );
const sessionMiddleware = session({
secret: "fas fas",
resave: false,
saveUninitialized: false,
cookie: {
path: '/',
httpOnly: true,
maxAge: 365 * 24 * 60 * 60 * 1000 // e.g. 1 year
},
store: new NedbStore({
filename: 'path_to_nedb_persistence_file.db'
})
})为express应用程序加入session中间件
1
app.use(sessionMiddleware);
::: tip
以上代码都在app.js里面!
:::session在路由中的使用
1
2
3
4router.get('/', function(req, res) {
const session = req.session;
session.xxx //操作session
});
使用样例
后台index.js
1 | var express = require('express'); |
如果在设置的时效内,即使关了服务器再次打开,去别的界面也能访问session.num!
users.js
1 | var express = require('express'); |
实际开发中遇到的问题
post
请求中进行redirect重定向无法跳转
解决办法,不要返回两次head,在回调中增加return
.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 念一!
评论
GitalkLivere