Passport.authenticate сойдет с ума, распечатав 400 ошибок ... Я хочу знать, почему не работает паспорт, и выдает ошибки, когда регистр работает.Помогите мне.
Если вы используете паспорт из node.js через html-документ, он не работает должным образом, потому что он перемещен в vue.Я новичокЯ думаю, что сделал много ошибок.Я не знаю, где проблема.
на стороне этого сервера (узла) backend / router / login.js
также, я проверил vue для данных черезconsole.log.
var express = require('express');
var router = express.Router();
var User = require('../models/user');
var passport = require('passport');
router.post('/signUp', function(req, res, next) {
var id = req.body.user.username;
var password = req.body.user.password;
console.log('id: ' + req.body.user.username);
console.log('password: ' + password);
User.register(new User({username: id}), password, function(err,newuser) {
if(err){
console.log(err);
return res.json({result: 0});
}else{
passport.authenticate('local', function (err, user, info) {
var error = err || info;
if (error) return res.json(401, error);
if (!user) return res.json(404, {message: 'Something went wrong, please try again.'});
res.json(req.user);
})(req, res, next);
}
});
});
router.post('/', passport.authenticate('local') ,function(req, res) {
return res.json({result: 1});
});
module.exports = router;
на стороне клиента внешний интерфейс / src / components / users / SignUpPage.vue
<template>
<div id="SignUp">
<div> Sign Up </div>
ID : <input v-model="user.username" placeholder="ID"> <br />
Password : <input v-model="user.password" type="password" placeholder="password">
<button v-on:click="signUp" >SignUp</button>
</div>
</template>
<script>
export default {
data: function () {
return {
user: {
username: '',
password: ''
}
}
},
methods: {
signUp: function (event) {
this.$http.post('/api/login/signUp', {
user: this.user
}, { withCredentials: true })
.then((response) => {
console.log('response');
console.log(response.data);
if (response.data.result == 0) {
alert('Error, please, try again');
}
if (response.data.result == 1) {
alert('Success');
this.$router.push('/login');
}
})
.catch(function (error) {
alert('frontend error');
console.log(error);
})
}
}
}
</script>
Я настроил его как бэкэнд, когдаСтойка регистрации попросила должность, и я использовал Axios.var path = require ("path")
module.exports = {
outputDir : path.resolve(__dirname, "../backend/public/"),
devServer:
{ proxy:
{
'/api': {
target: 'http://localhost:3000/api',
changeOrigin: true ,
pathRewrite:{
"^/api" : ''
}
}
}
}
Это часть app.js.Я сделал базовые настройки через документ паспорта и использовал passport-local-mongoose в качестве своей стратегии аутентификации.
app.use(require('express-session')({
secret:"rtyhsx2",
resave:false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new localStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
user.js
var mongoose = require('mongoose');
var passportLocalMongoose = require('passport-local-mongoose');
var userSchema = new mongoose.Schema({
username: String,
password: String
});
userSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model('User',userSchema);