【发布时间】:2021-03-24 00:13:35
【问题描述】:
我使用 Node js 开发了一个多用户 Web 应用程序。 我使用 ExpressJS 作为框架,还使用 PassportJS 来管理身份验证和用户会话。
一切正常,但是当两个或多个用户发出并发请求时出现了一个大问题:
后端正在混合请求并将错误的响应返回给客户端,以便他们可以获取其他用户的信息。
我不知道发生了什么,我感到非常痛苦。我的护照序列化/反序列化代码(我使用 SQL Server 数据库和mssql 进行连接):
passport.serializeUser((user, done)=>{
done(null, user.Id)
})
passport.deserializeUser((id, done)=>{
params = []
db.buildParams(params,"Id", TYPES.Int, id)
db.procedure("FindUserById", params, (rows)=>{
console.log(rows[0])
done(null, rows[0])
})
})
我的应用配置:
const app = express()
app.use(session({
secret: 'supersecretpwd',
resave: false,
saveUninitialized: false,
secure: true,
httpOnly: true,
expires: expiryDate
}))
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(validator());
app.use((req, res, next) => {
app.locals.message = req.flash('message')
app.locals.success = req.flash('success')
app.locals.user = req.user
next();
});
我真的不知道我应该提供更多的代码,但我可以提供更多的实现细节。
【问题讨论】:
-
你是如何声明变量的?使用
var? -
是的,我检查了一切,没有一个全局变量
标签: node.js express session passport.js tedious