【问题标题】:passport.deserializeUser() not working with Firebasepassport.deserializeUser() 不适用于 Firebase
【发布时间】:2018-12-15 06:34:15
【问题描述】:

我无法使用 passport.deserializeUser() 方法在 Firebase 中搜索用户。

如果我这样写代码

passport.deserializeUser((id, done) => {
   // id has the correct value, Twitter id for example when user tries to log in
     database.child('people').orderByChild('id').equalTo(id).once('value', user => {
     console.log(user.val()); //null
   });
     done(null, user.val());
});

user.val() 返回null

如果我写

console.log(user)

user返回一个对象,无论值是否相等。

我知道 Firebase 在 Web 控制台中有自己的身份验证方法,但我想知道为什么这不起作用?数据库database.child().orderByChild() 的相同方法适用于其他地方,但不适用于passport.deserializeUser()

我已经设置了passport.sessioncookieParsercookieSession 并且浏览器确实从服务器接收到cookie,但是当我尝试反序列化用户时它不起作用。当我尝试使用策略进行身份验证时,它通过 passport.deserialize() 但 Firebase 部分不起作用,即使它拥有正确的 id 值。

【问题讨论】:

    标签: javascript firebase firebase-realtime-database passport.js session-cookies


    【解决方案1】:

    在您的代码中,user 始终是DataSnapshot 对象。如果您查询的位置没有数据,则该对象上的 val() 方法将返回 null。这都是实时数据库查询的预期行为,与身份验证无关。

    【讨论】:

    • 感谢您的信息。不知道。
    猜你喜欢
    • 2017-12-06
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 2019-11-16
    • 2019-04-13
    • 2022-01-06
    相关资源
    最近更新 更多