【问题标题】:Express session always creating new session when making get/post request from react js从反应 js 发出获取/发布请求时,快速会话总是创建新会话
【发布时间】:2021-08-02 19:58:38
【问题描述】:

当从 express-session 请求会话时,我正在使用 Fetch api 从 react JS 发布或获取请求,总是创建新会话。

后台

app.use(session({
secret: 'sec12',
resave: false,
saveUninitialized: false,
store: MongoStore.create({
    mongoUrl: keys.mongodb.dbURI,
    autoRemove: 'native',
    ttl: 9 * 60 * 60,
    mongoOptions: {
        useNewUrlParser: true, 
        useUnifiedTopology: true
    }
  })
}));

cors

var corsOptions = {
origin: 'http://localhost:3000',
methods: ['GET', 'POST'],
optionsSuccessStatus: 200,
credentials:true,
preflightContinue: true,
allowedHeaders: ['Content-Type', 'Authorization', 'X-Requested-With', 'Accept']
}
app.use(cors(corsOptions))

以及来自 react JS

var requestOptions = {
    method: 'POST',
    headers: headers,
    body: JSON.stringify(formData),
    redirect: 'follow',
    credentials: 'include',
  };
   fetch(url, requestOptions)
       .then(response => {
         if(response.ok){
            return response.json()
         }else{
            return reject('Oppps... Something went wrong the backend server not found!')
         }
       })
       .then(result => result?.error ? resolve(result) : resolve(result))

【问题讨论】:

    标签: node.js reactjs express-session


    【解决方案1】:

    我想,我想通了.. 只需添加 req.cookie 一旦经过身份验证并在每个请求中解析它。

    登录验证后放置此脚本

    res.cookie('access_token', token, { maxAge: 900000, httpOnly: true });
    

    然后使用 cookieParser 并在每个请求中解析它

     const cookieExtractor = req =>{
     let token = null;
     if(req && req.cookies){
        token = req.cookies['access_token']
      }
     return token;
     }
    
     // MIDDLEWARE
     passport.use(new JwtStrategy({jwtFromRequest : cookieExtractor, secretOrKey : 
       "secret01"},  async (payload, done)=>{
      User.findById({_id : payload.sub},(err, user)=>{
        if(err) {
            return done(err,false);
        }
        if(user){
            return done(null,user);
        }else{
            return done(null,false);
        }
    });
    }));
    

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2012-08-30
      • 2017-06-27
      • 2022-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多