Авторизация NuxtAuth и passportJS
При отправке данных c фронтенда NuxtAuth на бекенд Express, MySQL, JWT, passport и passport-jwt получаю 404 ошибку?
Ошибку получаю при попытке войти и получить токен, регистрация же пользователя проходит корректно без каких-либо ошибок.
passport.js:
const JwtStrategy = require('passport-jwt').Strategy
const ExtractJwt = require('passport-jwt').ExtractJwt
const db = require('../config/database')
const billConfig = require('../bill-config')
const options = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: billConfig.JWT
}
module.exports = passport => {
passport.use(
new JwtStrategy(options, (payload, done) => {
try {
db.query("SELECT `client_id`, `client_email` FROM `users` WHERE `client_id` = '" + payload.clientId + "'", (error, rows, fields) => {
if(error) {
console.log(error)
} else {
const user = rows
if(user) {
done(null, user)
} else {
done(null, false)
}
}
})
} catch(e) {
console.log(e)
}
})
)
}
Routes:
module.exports = (app) => {
const passport = require('passport')
const UserController = require('../Controller/UsersController')
app
.route('/api/users')
.get(passport.authenticate('jwt', { session: false }), UserController.getAllUsers)
app
.route('/api/auth/signup')
.post(UserController.signup)
app
.route('/api/auth/signin')
.post(UserController.signin)
}
UserContoller.js:
exports.signin = (req, res) => {
db.query("SELECT `client_id`, `client_email`, `client_password` FROM `users` WHERE `client_email` = '" + req.body.client_email + "'", (error, rows, fields) => {
if(error) {
response.status(400, error, res)
} else if(rows.length <= 0) {
response.status(404, `Пользователь с таким email не найден`, res)
} else {
const row = JSON.parse(JSON.stringify(rows))
row.map(rw => {
const client_password = bcrypt.compareSync(req.body.client_password, rw.client_password)
if(client_password) {
const token = jwt.sign({
clientId: rw.client_id,
clientEmail: rw.client_email
}, billConfig.JWT, { expiresIn: 120 * 120 })
response.status(200, {token: `Bearer ${token}`}, res)
console.log(`Bearer ${token}`)
} else {
response.status(401, {message: `Пароль не верный`}, res)
}
return true
})
}
})
}
Страница входа из Nuxt`а:
export default {
layout: 'other',
data () {
return {
email: "",
password: "",
error: null
}
},
methods: {
async signin () {
try {
let response = await this.$auth.loginWith('local', {
client_email: this.email,
client_password: this.password
})
console.log(response)
} catch (e) {
//this.error = e.response.data.values.message
this.error = e
}
}
}
}
nuxt.config.js:
axios: {
baseURL: 'http://localhost:3500/api'
},
router: {
middleware: ['auth']
},
auth: {
strategies: {
local: {
endpoints: {
login: { url: '/auth/signin', method: 'post', propertyName: 'token' },
logout: false
},
tokenRequired: true,
tokenType: 'Bearer'
}
},
redirect: {
login: '/sign/in',
}
},
UPD: Через постман все работает корректно, а при отправке данных через Nuxt получаю 404, такое происходит именно при авторизации, при регистрации же все хорошо.