gpt4 book ai didi

javascript - ExpressJS 和 Angular - 'leaving' 用于进行服务器端身份验证的应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:04 27 4
gpt4 key购买 nike

我的应用程序在 NodeJS、ExpressJS 和 AngularJS 上运行。我正在尝试使用 PassportJS 进行 Facebook 身份验证。为了避免发布一堆不必要的代码,我们假设 Passport 代码按预期工作并登录 Facebook,获取 token 并接收响应。

在 ExpressJS 中,我的路线设置如下:

app.get('/', routes.index);
app.get('/fbauth', passport.authenticate('facebook', { scope: 'email' }));
app.get('/fbauthed', passport.authenticate('facebook',{ failureRedirect: '/' }), routes.loggedin);
app.get('/logout', function(req, res) {
req.logOut();
res.redirect('/');
});

我的服务器设置在localhost:3000 .

问题

我的问题是 Angular 根本没有处理这个问题。当我在页面上放置一个链接到 href="/fbauth" 时(这将转到 localhost:3000/fbauth )我看到地址栏更改为 localhost:3000/fbauth瞬间,我的主 localhost:3000页面重新加载。

但是,如果我输入 localhost:3000/fbauth进入地址栏,身份验证发生,我被传递到 facebook -> localhost:3000/fbauthed

认为发生这种情况是因为 Angular 路由试图“接管” <a> 中的 URL链接,但我不知道如何实现它。我尝试将我的 Angular 路由配置为:

when('/fbauth', {
redirectTo: '/fbauth'
}).

但这会加载一个空白屏幕。我怎样才能让两者一起工作?

最佳答案

在 Angular 1.0.1 中添加 target="_self"有效:

使用 Facebook 登录

此功能已记录(http://docs.angularjs.org/guide/dev_guide.services .$location - 搜索“_self”)

如果您好奇,请查看 Angular 源代码(第 5365 行@ v1.0.1)。仅当 !elm.attr('target') 为 true 时才会发生点击劫持。

关于javascript - ExpressJS 和 Angular - 'leaving' 用于进行服务器端身份验证的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781748/

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