如何读取通过服务器端(node-express)Passport 设置的客户端(react)cookie?

IT技术 node.js reactjs cookies authorization passport.js
2021-04-28 06:13:30

如何读取通过服务器端(node-express)Passport 设置的客户端(react)cookie?

cookie 设置正确,可以在服务器端进行序列化和反序列化,如下面的代码所示:

passport.serializeUser(function(user, done) {
  done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  User.findById(id, function(err, user) {
    done(err, user);
  });
});

如何在客户端(React)读取此 cookie?

我对 cookie 没有太多经验,但我看到了以下解决方案:

import React from 'react';
import Cookies from 'js-cookie';

class App extends React.Component {
     this.state = {
        username: Cookies.get('username')
     }

//  more code....
}  


import React from 'react';
// other imports...
import Cookies from 'universal-cookie';

const cookies = new Cookies();

class App extends React.Component {
     this.state = {
        username: cookies.get('username')
     }

//  more code....  

和许多其他人......但似乎阅读cookie你必须知道usernamekey获得它的value。由于 Passport.js 在serializeUser方法中创建了我的 cookie ,我不知道它的key值是什么有谁知道键值是什么或如何读取由护照创建的 cookie?

1个回答

cookie 将是 HTTP Only 并且在客户端不可读。但是,您可以轻松地做到这一点:

  • 创建服务器端 API 路由
  • 也许在 GET /api/user/current
  • 此端点执行上述 cookie 反序列化,然后返回一个 JSON 对象

然后客户端浏览器代码只对上述端点执行 Ajax GET。