reactjs 显示来自 passportjs auth 的用户信息
reactjs display user info from passportjs auth
我正在使用护照在我的 React 样板应用程序的服务器中进行身份验证,但我不确定如何从我的服务器端获取 req.user 到 reactjs...
我应该改变这个吗
app.get('*', (req, res) => {
fs.readFile(path.join(compiler.outputPath, 'index.html'), (err, file) => {
if (err) {
res.sendStatus(404);
} else {
res.send(file.toString());
}
});
});
我非常不确定该怎么做,尤其是因为我之前没有使用过 reactjs
您必须添加一条路线(在您发送的代码之前)才能检索它,如下所示:
app.get('/userDetails', (req, res) => res.json(req.user))
还有一个警告:您的用户对象可能有一些您不应发送给客户端的字段,因此最好在发送响应之前删除它们:
app.get('/userDetails', (req, res) => {
const { user } = req.body
delete user.password
res.json(user)
})
然后你需要通过向后端请求来获取数据。一种可能的实施方式是:
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>
)
}
}
如果您使用 templating engine 将数据嵌入视图非常简单。
这是一个使用哈巴狗的例子:
views/index.哈巴狗
doctype html
html
body
h2 Page
script.
window.user = '#{JSON.stringify(user)}'
server.js
app.use('view engine', 'pug');
...
app.get('*', (req, res) => {
res.render('index', {
user: {
id: 1,
name: 'Joe Bloggs'
...
}
});
});
我正在使用护照在我的 React 样板应用程序的服务器中进行身份验证,但我不确定如何从我的服务器端获取 req.user 到 reactjs...
我应该改变这个吗
app.get('*', (req, res) => {
fs.readFile(path.join(compiler.outputPath, 'index.html'), (err, file) => {
if (err) {
res.sendStatus(404);
} else {
res.send(file.toString());
}
});
});
我非常不确定该怎么做,尤其是因为我之前没有使用过 reactjs
您必须添加一条路线(在您发送的代码之前)才能检索它,如下所示:
app.get('/userDetails', (req, res) => res.json(req.user))
还有一个警告:您的用户对象可能有一些您不应发送给客户端的字段,因此最好在发送响应之前删除它们:
app.get('/userDetails', (req, res) => {
const { user } = req.body
delete user.password
res.json(user)
})
然后你需要通过向后端请求来获取数据。一种可能的实施方式是:
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>
)
}
}
如果您使用 templating engine 将数据嵌入视图非常简单。
这是一个使用哈巴狗的例子:
views/index.哈巴狗
doctype html
html
body
h2 Page
script.
window.user = '#{JSON.stringify(user)}'
server.js
app.use('view engine', 'pug');
...
app.get('*', (req, res) => {
res.render('index', {
user: {
id: 1,
name: 'Joe Bloggs'
...
}
});
});