使用passport.js的Twitter登录重新登录用户

5

我的护照上有Twitter身份验证。从登录方面来说一切都很好。我有这段代码。

app.get('/auth/twitter', function (req, res) {
    if (req.user) {
        return res.redirect('/');
    }
    return passport.authenticate('twitter')(req, res);
});

如果用户已经使用Twitter登录我的网站,它会直接重定向回来(最后可能会给出一条消息)。一旦他们退出网站并再次点击“使用Twitter登录”,它会再次带他们到Twitter授权应用程序页面。这不应该发生。当我查看其他网站时,它从未要求我重新授权应用程序。如果我查看我的Twitter个人资料的已授权应用程序部分,我会看到我正在开发的应用程序。
为什么我的应用程序在我已经授权的情况下仍然在请求授权?我如何更改此设置(我正在数据库中存储令牌和令牌密钥)?感谢您的帮助。
1个回答

7

最近在我的开发系统中遇到了同样的问题,但在生产环境中没有出现。

对我来说,问题可以追溯到Twitter上的应用程序设置。当我访问Twitter Dev网站并开始仔细比较我为我的DEV和PROD系统所做的选择时,我注意到我的DEV系统的“我的应用程序”选项卡上未选中“允许使用Twitter登录”的复选框,而我的PROD系统则已选中。

复选框下的小字在应用程序设置选项卡上说:

启用后,您的应用程序可用于“使用Twitter登录”。禁用后,您的应用程序将无法使用/oauth/authenticate,任何对其的请求都将重定向到/oauth/authorize

授权与认证之间的区别不是通过术语明确的,但授权每次都需要确认,而认证“记住”用户的选择。

在我进行了这个单一的更改后,我的DEV系统停止每次通过Twitter测试登录时要求我进行授权相关确认...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接