gpt4 book ai didi

javascript - Angular2 中的 Passport JS session 数据

转载 作者:可可西里 更新时间:2023-11-01 02:43:39 24 4
gpt4 key购买 nike

从后端向前端发送通行证 session 信息的最佳方式是什么?

我的应用程序在端口 3000 上运行。前两个获取用于 facebook 登录和重定向。接下来是从数据库中获取用户数据(用户id应该存储在req.user中)

路由.js:

app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' }));

app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
successRedirect : 'http://localhost:8000/',
failureRedirect : '/fail'
})
);

app.get('/auth/userdata', isLoggedIn, function(req, res) {
Donator.findById(req.user, function(err, fulluser) {
if (err) throw err;
res.json(fulluser);
})
});

function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
next();
} else {
res.json(false);
}
};

Passport 配置.js

'facebookAuth' : {
'clientID' : 'secret',
'clientSecret' : 'secret',
'callbackURL' : 'http://localhost:3000/auth/facebook/callback'
},

所以在我的 Angular2 应用程序中,我可以转到 http://localhost:3000/auth/facebook,然后重定向到 FB 登录页面,如果成功则重定向到 http://localhost:3000/auth/login/callback 将我带到 http://localhost:8000/

在我的 Angular2 应用程序中,它在端口 8000 上运行

getUser(){
this.http.get('http://localhost:3000/auth/userdata')
.map(res => return res.json())
}

每次调用 getUser() 时,它都会返回“false”。有没有一种简单而安全的方法可以将此 session 数据“注入(inject)”到我在不同端口上的前端?此外,当我在浏览器中访问 http://localhost:3000/auth/userdata 时,我可以看到此配置文件呈现为 JSON。

当我在同一个端口上设置后端和前端时它工作,facebook、twitter、google、本地,一切都很好,getUser 返回完整的用户配置文件。

我希望这很清楚。

最佳答案

这是 Angular2 中请求的问题。我已经为每个请求添加了凭据:

getUser(){
this.http.get('http://localhost:3000/auth/userdata', {withCredentials: true})
.map(res => return res.json())
}

现在好了。

关于javascript - Angular2 中的 Passport JS session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41682774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com