我实现了OpenID护照.js策略(passport-steam http://www.passportjs.org/packages/passport-steam/(
到我的 MERN-stack 应用程序。登录用户的信息将保存在快速会话中。因此,可以通过以下途径访问包含用户信息的对象
req.session.passport.user
在我的节点.js文件中。
使我的 React-前端可以访问此会话数据的最佳/常见方法是什么?在其他非反应项目中,我使用了像车把这样的模板引擎.js这使得通过像这样传递属性来显示属性变得非常容易:
app.get('/', (req, res) => {
res.render('main', {
user: req.user
});
});
另外,我不想在服务器端渲染我的反应应用程序。
为用户创建了一个端点:
app.get("/user", (req, res) => {
res.send(user);
});
并在我的 react 应用程序中获取数据,创建一个 Conext 以使其可用于所有其他组件:
import React, { createContext, useState, useEffect } from "react";
const context = createContext(null);
const UserProvider = ({ children }) => {
const [user, setUser] = useState({});
useEffect(() => {
fetch("/user")
.then(res => res.json())
.then(res => setUser(res))
.catch(err => {
console.log(err);
});
}, []);
return (
<context.Provider value={user}>
{children}
</context.Provider>
);
};
UserProvider.context = context;
export default UserProvider;