簡體   English   中英

護照js會議與科爾斯沒有合作

[英]passport js sessions does not work with Cors

我在互聯網上搜索了很多,但我找不到答案。

我在一個端口使用我的前端,在另一個端口使用我的后端。 我使用cors來啟用請求,這是有效的。 但是當我實現護照js並且使用mongodb whit的會話不起作用時,這意味着當我嘗試使用req.user獲取用戶時,這是未定義的。 這是我的index.js代碼

app.use(cors());
app.use(session({
resave: false,
saveUninitialized: false,
secret: 's3cr3et',
store: new MongoStore({
    url: process.env.MONGO_URI
})
}));
app.use(passport.initialize());
app.use(passport.session());

我的護照js是

在這里,我定義我的auth,序列化和反序列化用戶。 我的Auth和序列化工作正常, 但不反序列化

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

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

passport.use(new LocalStrategy({ usernameField: 'email' }, (email, password, done) => {
  User.findOne({ email: email.toLowerCase() }, (err, user) => {
    if (err) { return done(err); }
    if (!user) { return done(null, false, { error: 'Invalid credentials.' }); }
    user.comparePassword(password, (err, isMatch) => {
      if (err) { return done(err); }
      if (isMatch) {
        return done(null, user);
      }
      return done(null, false, { error: 'Invalid credentials.' });
    });
  });
}));

我也試過cookie會話而不是mongo db,但我想這不是解決方案。 問題是因為某些原因護照不讀會議。

此外,我嘗試啟用coors憑據並指定原點但反序列化仍然沒有設置用戶

app.use(cors({
    credentials: true,
    origin: ['http://localhost:8080']
}));

我希望你能幫助我,因為我無法讓它工作謝謝!!

我遇到過同樣的問題。 在我的情況下,我在前端有一個SPA,在Node.js上有一個RESFful(好吧,不是我們在這里維護狀態)。 后來我發現當我以前向RESTful API發出請求時,我沒有發送瀏覽器cookie和數據。 這正是問題所在,即不讓用戶反序列化的問題,因為我們需要后端的cookie數據來找出哪個用戶發送了特定請求。 嘗試做同樣的事情,我希望能像我一樣解決你的問題。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM