安装session 包并引入:
const session = require('express-session') // session 插件
const Store = require('express-mysql-session') // session 插件
入口设置session:
app.use(session({
secret: 'vue',
name: 'SESSION', // 这里的name值得是cookie的name,默认cookie的name是:connect.sid
cookie: {maxAge: 24 * 3600}, // 设置maxAge是80000ms,即80s后session和相应的cookie失效过期
resave: true, // 是否允许session重新设置
rolling: true, // 是否按照原设定的maxAge值重设session同步到cookie中
saveUninitialized: false, // 是否设置session在存储容器中可以给修改
store: new Store({
host: 'localhost',
user: 'root',
password: 'root',
port: '3306',
database: 'test'
})
}))
全局请求添加验证:
app.all('*', function (req, res, next) {
var url = req.originalUrl// 获取浏览器中当前访问的nodejs路由地址
if (url === '/api/user/login' || (url === '/api/user/addUser') || (url === '/api/user/upload')) {
next()
} else {
console.log('req.session.sid', req.session.sid)
if (req.session.sid) { // 判断用户是否登录
next()
} else {
res.json({
responseCode: 1000,
responseMsg: '暂无权限'
})
}
}
})
调接口使用:
// 查看内容列表
router.get('/getList', (req, res)=> {
var user = req.session.sid
console.log('user', user)
var sql = $sql.getData.getList + $sql.getData.getCount
var params = req.query
console.log('getListparams', params)
console.log('getListparamsid', req.id)
conn.query(sql, [user, parseInt((params.pageNumber - 1)* params.pageSize), parseInt(params.pageSize), user], function (err, result) {
console.log('result', JSON.stringify(result))
if (err) {
console.log(err)
}
if (result.length) {
jsonWrite(res, {list: result[0], total: result[1][0].total|| 0})
}
})
})
网友评论