所以我有一个在本地主机上与API交互的应用程序,我使用的是Express、MongoDB和Reaction作为前端。Passport本地身份验证身份验证。当我在Reaction中使用Fetch API时,我遇到了身份验证不持久的问题。当我使用POSTMAN发出POST请求时,一切正常,我的身份验证状态返回TRUE。可以肯定的是,Passport初始化是正确的,因为在 Postman 中它工作得很好。令人困惑的是,我对两者都使用相同的身体。以快递形式发布请求:
router.post('/login', user_controller.user_login_post, (req, res) => {
console.log(req.body);
if (!req.user) {
console.log('User not found!');
res.send(req.body);
} else {
console.log('Signed in');
res.send(req.body);
}
});
控制器中的LOGIN_POST:
exports.user_login_post = passport.authenticate('local');
Auth checking in express/passport:
app.get('/api/checkauthentication', (req, res) => {
req.isAuthenticated()
? res.status(200).json({ authenticated: true })
: res.status(401).json({ authenticated: false });
});
Function I'm calling on submit in React:
const login = (data) => {
fetch('/api/users/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
credentials: 'include',
})
.then((response) => response.json())
.then((data) => console.log('DATA: ', data))
.catch((err) => {
console.log('Error: ', err);
});
};
Also 'Signed in' gets logged out but auth only persists when I make the request from postman.
1条答案
按热度按时间o3imoua41#
出现此问题是因为您使用的是本地主机。希望它能帮到什么人。