首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >会话不是使用chrome,而是与Firefox一起工作。

会话不是使用chrome,而是与Firefox一起工作。
EN

Stack Overflow用户
提问于 2020-07-30 14:20:58
回答 1查看 532关注 0票数 0

我正在使用Firebase来登录用户,并使用cookie解析器。我从Firebase Docs [消]防火文档编写了代码

奇怪的是,它只适用于firefox桌面。我试过用铬,但不起作用。它也不适用于手机浏览器。

保存会话cookie的路由

代码语言:javascript
复制
app.get('/sessionLogin', (req, res) => {
const idToken = req.query.idToken;
 console.log(idToken);
admin.auth().verifyIdToken(idToken).then(function (decodedToken) {
    var uid = decodedToken.uid;
    console.log("uid  " + uid);
    const expiresIn = 60 * 60 * 24 * 5 * 1000;

admin.auth().createSessionCookie(idToken, { expiresIn })
    .then((sessionCookie) => {
        const options={maxAge : expiresIn ,httpOnly:true,secure:true};
        res.cookie('session',sessionCookie,options);
        res.redirect('/newPage');
    },error =>{
        res.status(401).send("OPSIE");
    });
}).catch(function (err) {
    console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    console.log(err);
}); 

});

经核实的路线

代码语言:javascript
复制
app.get('/newPage', (req, res) => {

const sessionCookie = req.cookies.session || req.headers.cookie|| '' ;
// Verify the session cookie. In this case an additional check is added to detect
// if the user's Firebase session was revoked, user deleted/disabled, etc.
admin.auth().verifySessionCookie(
  sessionCookie, true /** checkRevoked */)
  .then((decodedClaims) => {
   res.render('newPage');
  })
  ,catch(error => {
    // Session cookie is unavailable or invalid. Force user to login.
    res.redirect('/signIn');
    console.log(error);    //this is where error is being logged
  });
});

我所犯的错误

代码语言:javascript
复制
FirebaseAuthError: Decoding Firebase session cookie failed. Make sure you passed the entire string JWT which represents a session cookie. See https://firebase.google.com/docs/auth/admin/manage-cookies for details on how to retrieve a session cookie.
    at FirebaseAuthError.FirebaseError [as constructor] (D:\FIREBAESFJAGDS\functions\node_modules\firebase-admin\lib\utils\error.js:42:28)
    at FirebaseAuthError.PrefixedFirebaseError [as constructor] (D:\FIREBAESFJAGDS\functions\node_modules\firebase-admin\lib\utils\error.js:88:28)
    at new FirebaseAuthError (D:\FIREBAESFJAGDS\functions\node_modules\firebase-admin\lib\utils\error.js:147:16)
    at FirebaseTokenVerifier.verifyJWTWithProjectId (D:\FIREBAESFJAGDS\functions\node_modules\firebase-admin\lib\auth\token-verifier.js:166:35)
    at D:\FIREBAESFJAGDS\functions\node_modules\firebase-admin\lib\auth\token-verifier.js:102:26
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
  errorInfo: {
    code: 'auth/argument-error',
    message: 'Decoding Firebase session cookie failed. Make sure you passed the entire string JWT which represents a session cookie. See https://firebase.google.com/docs/auth/admin/manage-cookies for details on how to retrieve a session cookie.'
  },
  codePrefix: 'auth'
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-30 19:13:00

事实证明,在https上运行服务器解决了这个问题(如果这有意义的话)。

指南

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63175191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档