简化的代码如下:
await this.$store.dispatch('auth/login', {
email: this.form.email,
password: this.form.password
});
称为
import axios from 'axios';
export const login = async function({ commit }, { email, password }) {
if (!email || !password) throw new Error('Email and password are required');
try {
const { data } = await axios.post('/api/auth/login', { email, password });
// commit(mutations.SET_USER, data);
} catch (error) {
console.log(error);
}
和axios请求的处理方式如下:
import passport from 'passport';
router.post('/login', passport.authenticate('local'), (req, res) => {
// res.json(req.user);
res.status(200).json({ message: 'user' });
});
auth_config.js具有以下内容:
const LocalStrategy = require('passport-local').Strategy;
const User = require('./api/models').User;
module.exports = passport => {
passport.use(
new LocalStrategy({ usernameField: 'email' }, (email, password, done) => {
console.log('1');
User.findOne(
{
where: {
email: email
}
},
(err, user) => {
console.log('user.comparePassword ...');
done(null, user);
}
);
console.log('2');
})
);
};
(请注意,在用户名之前添加req
参数或按照passport-local's readme所述执行return done(...
也不起作用。)
服务器的index.js具有以下相关部分:
const session = require('express-session');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const passport = require('passport');
app.use(bodyParser.json());
app.use(cookieParser());
app.use(
session({
secret: ',djkwnks&jnfk/gmKZNFuif3%',
resave: false,
saveUninitialized: false,
cookie: { maxAge: 60000 }
})
);
app.use(passport.initialize());
app.use(passport.session());
//const sequelize = require('sequelize');
//sequelize.Promise = global.Promise;
require('./auth_config')(passport);
输出为:
1
2
执行中(默认):SELECT ...
因此执行了选择用户的SQL语句。
现在,我的问题是它没有完成加载(等待axios.post尚未完成),过了一会儿,我一直收到“错误:网络错误”。
注册用户有效。
我已经尝试了指南和自述文件中的一些内容。某些异步功能可能有问题吗?也许与sequelize.Promise有关吗?当地护照有问题吗?我可能只是在这里错过一些琐碎的事情吗?我们非常感谢您的帮助。