im using passport to authenticate in the server of my react boilerplate application but I'm not sure how to get req.user from my server side to reactjs...
Should I change this
app.get('*', (req, res) => {
fs.readFile(path.join(compiler.outputPath, 'index.html'), (err, file) => {
if (err) {
res.sendStatus(404);
} else {
res.send(file.toString());
}
});
});
You have to add a route(before the code you sent) to retrieve it, like this:
app.get('/userDetails', (req, res) => res.json(req.user))
And a warning: your user object has probably some fields you shouldn't send to the client, so it would be good to delete them before sending a response:
app.get('/userDetails', (req, res) => {
const { user } = req.body
delete user.password
res.json(user)
})
Then you need to fetch the data by doing a request to the backend. One possible implementation would be:
class SomeComponent {
state = { user: null }
componentDidMount () {
fetch('/userDetails')
.then(res => res.json())
.then(user => {
// do something with the data
console.log(user)
this.setState({ user })
})
render () {
const { user } = this.state
return (
<span>{user ? user.firstName : 'No user data'}</span>
)
}
}