我通过护照(Koa,Mongodb,React,Redux)意识到了用户的授权。
router.post('/login', function(ctx, next) {
return passport.authenticate('local', async function(err, user, info) {
if (err) throw err;
if (user === false) {
ctx.status = 401;
ctx.body = { error: info };
} else {
ctx.body = {
success: true
};
await ctx.login(user);
}
})(ctx, next);
})
如果用户已登录,则会重定向到个人资料页面(主页)。
router.get('/login', function(ctx, next) {
if (ctx.isAuthenticated()) {
ctx.redirect('/');
} else {
ctx.body = fs.readFileSync(path.resolve(path.join('build', 'index.html')), 'utf8')
}
});
由于我有一个水疗中心,我总是传递一个静态文件(通过反应路由器在客户端上路由)
问题是我无法理解在加载个人资料页面时如何获得有关用户的信息
如果我从React组件发送ajax-request(feth),那么请求另一个会话ID并且它与用户没有关联。
或者,我需要在服务器上执行此操作,但是如何在服务器上使用商店存储?
如何最好地解决这个问题?
答案 0 :(得分:0)
嗯,虽然它可能不是最好的方法,但最简单的方法是在你的html文件中有一个部分,如..
<script type="text/javascript">
window.currentUser = $$USER$$
</script>
然后对身体进行替换。
let content = fs.readFileSync(path.resolve(path.join('build', 'index.html')), 'utf8')
content = content.replace('$$USER$$', JSON.stringify(user))
ctx.body = content
在您的React应用中,您可以使用window.currentUser
。