在登录时验证凭据时尝试为用户设置会话时,我收到未定义的错误。我正在尝试使用express-session为用户创建会话,但没有将其直接导入文件中(被指导不要这样做),但是不确定如何解决给定的错误。任何帮助和见解将不胜感激!
终点:
router.post("/login", async (req, res, next) => {
try {
const { username, password } = req.body
// * checks for record existence in db, assigns record to var for access
const user = await users_access.findByFilter({ username })
if (!user) {
return res.status(401).json({ message: 'invalid crededentials' });
}
// * compares the entered password to the hash on record
const passwordValid = await secure.compare(password, user.password)
// * handling invalid responses + creating session
if (!passwordValid) {
return res.status(401).json({ message: 'invalid credentials' });
}
req.session.user = user
res.json({ message: `welcome, ${user.username}!`})
} catch(error) {
next(error)
}
});
应用程序模型:
// * add users to the datbase
// * inserts argument into user table in db access
// * returns a user found by id
const add = async (user) => {
const [id] = await database_access("users")
.insert(user)
return findById(id)
}
// * find user record with username and password
const find = () => {
return database_access("users").select("id", "username")
}
// * find user by filter
const findByFilter = (filter) => {
return database_access("users")
.select("id", "username", "password")
.where(filter)
.first()
}
// * find user with id
const findById = (id) => {
return database_access("users")
.select("id", "username")
.where({ id }) // desctructuring id from the request
.first()
}
module.exports = {
add,
find,
findByFilter,
findById
}
如果您需要查看任何其他代码来进行评估,我很乐意提供,但是相信这是每个错误响应所引起的问题。谢谢你!
答案 0 :(得分:0)
因此,我想您正在使用服务器条目文件express-session
,app.js
,server.js
中的index.js
模块,但是您将其称为。</ p>
此登录处理程序必须在会话可用的上下文中使用。
我认为您想要的不是针对此特定路由器的单元测试,而是用于在您的应用程序上下文中测试此路由器的集成测试。
这就是我从您提供的信息中可以看到的全部。如果这还不够有用,也许您可以向我们展示您的服务器主文件。以及如何使用此路由器。