为什么 req.cookies 未定义?

Cod*_*000 12 javascript cookies node.js firebase firebase-authentication

情况:

我试图检查我的用户在向服务器发出请求时是否通过了身份验证。

我用谷歌搜索了一下,发现了这个:

如果用户通过 firebase 登录,如何显示不同的页面

所以这是我尝试使用这个库实现这个解决方案:

https://github.com/js-cookie/js-cookie/blob/latest/src/js.cookie.js


代码:

服务器端

  var cookies = require("cookie-parser");

  router.get("/", function(req, res, next){


      const { token } = req.cookies;

      console.log('Verifying token', token);


 });
Run Code Online (Sandbox Code Playgroud)

客户端

<script src="/public/js/cookieScript.js"> </script>

<a href="/upload" class = "authIn uploadButton btn btn-success pull-right">UPLOAD</a>

<script>

        const setAppCookie = () => firebase.auth().currentUser &&
            firebase.auth().currentUser.getToken().then(token => {
                Cookies.set('token', token, {
                    domain: window.location.hostname,
                    expire: 1 / 24, // One hour
                    path: '/',
                    secure: true // If served over HTTPS
             });
        });

</script>
Run Code Online (Sandbox Code Playgroud)

dNi*_*tro 27

除了需要cookie 解析器之外,您还应该配置您的 Express 应用程序以使用它:

var express = require('express');
var app = express();
var cookies = require("cookie-parser");

app.use(cookies());
Run Code Online (Sandbox Code Playgroud)


Asi*_*eed 9

我认为您应该粘贴更多服务器端代码。

你需要在 app.router 之前使用 express.cookieParser();中间件是按顺序运行的,这意味着在您的路由执行之前它甚至永远不会到达 cookieParser()。


Pan*_*olo 7

显然,您的代码在服务器上是正确的。因此,不能在客户端上正确设置 cookie。

复制/粘贴您找到的有关在不使用 SSL 时禁用安全 cookie 的解决方案:

    const setAppCookie = () => firebase.auth().currentUser &&
                firebase.auth().currentUser.getToken().then(token => {
                    Cookies.set('token', token, {
                        domain: window.location.hostname,
                        expire: 1 / 24, // One hour
                        path: '/',
                        secure: false // <-- false here when served over HTTP
                 });
            });
Run Code Online (Sandbox Code Playgroud)