Я создаю веб-приложение с Nuxt.js и хочу, чтобы пользователь вошел в систему со своей электронной почтой и паролем.
Я пытаюсь использовать модуль Nuxt.js / auth и подключаю его к моему API в ExpressJS. У меня работает логин, но после входа в систему пользовательские данные не устанавливаются.
Я использую:
- Nuxt.js v2.8.1
- Nuxt.js / auth v4.8.1
- ExpressJs v4.16.4
Я пробовал большинство (если не все) из вопросов о стековом потоке на эту тему. Но не удалось.
Вот код:
Nuxt.config.js
auth: {
redirect: {
login: '/login',
logout: '/login',
home: '/'
},
strategies: {
local: {
endpoints: {
login: { url: 'login', method: 'post', propertyName: 'token' },
user: { url: 'user', method: 'get', propertyName: false },
logout: false
}
}
}
}
login.vue : (логика входа)
async login(email, password) {
try {
await this.$auth.loginWith('local', {
data: { email, password }
})
} catch (e) {
this.$toast.error(e)
}
}
login.js в API:
module.exports = (req, res) => {
async.waterfall([
callback => {
lid.readByEmail((err, lidDetails) => {
if (err) {
console.log(err)
callback(err, null)
}
if (lidDetails.length < 1) {
console.log(err)
return res.status(404).json({ message: 'Kan lid niet vinden.' })
} else {
callback(null, lidDetails[0])
}
}, req.body.email)
},
(lidDetails, callback) => {
if (!lidDetails) {
return rejectLogin(res)
}
bcrypt.compare(req.body.password, lidDetails.wachtwoord, (err, passwordsMatch) => {
if (err) {
return callback(err, null)
}
if(!passwordsMatch) {
return rejectLogin(res)
}
callback(null, lidDetails)
})
}
], (err, lidDetails) => {
if (err) {
return res.status(500).json({ message: 'Er is een fout opgetreden' })
}
delete lidDetails.wachtwoord
const userJson = JSON.parse(JSON.stringify(lidDetails))
res.json({
user: userJson
})
})
}
В результате я ожидаю получить пользовательский объект со своими свойствами из базы данных.
На самом деле я получаю пустой пользовательский объект без каких-либо сообщений об ошибках.
Кто-нибудь знает решение этой проблемы?