我的问题与这个类似,那里的所有答案都没有帮助到我。
我正在使用Passport.js和本地策略(passport-local-mongoose)。 下面的中间件在Postman上运行正常,但每当我尝试从React客户端运行时就会失败。
exports.isLoggedIn = (req, res, next) => {
console.log(req.user) // undefined with react, but works from postman
if (req.isAuthenticated()) {
return next();
}
}
这是我的app.js文件:
require('./handlers/passport');
app.use(cors())
app.use(session({
secret: process.env.SECRET,
key: process.env.KEY,
resave: true,
saveUninitialized: true,
store: new MongoStore({ mongooseConnection: mongoose.connection })
}));
app.use(passport.initialize());
app.use(passport.session());
handlers/passport.js:
const passport = require('passport');
const mongoose = require('mongoose');
const User = mongoose.model('User');
passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
user.js (模型):
...
userSchema.plugin(passportLocalMongoose, { usernameField: 'email' });
客户端代码:
const url = 'http://localhost:7777/users/<id>';
const config = {
headers: {
'Content-Type': 'application/json',
},
};
axios.put(url, data, config)
.then(res => console.log(res))
.catch(err => console.log(err));
我有点不明白,passportLocal策略是否意味着我不能像我的示例那样同时使用API和客户端?谢谢:D