繁体   English   中英

为什么护照快递不再起作用了?

[英]Why doesn't passport express doesn't work anymore?

我有一个在 CentOS 7 服务器上运行的网站,我使用 pm2 进行生产,当我运行 pm2 日志时,会出现:

"Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak memory, and will not scale past a single process."

这运行良好且经过身份验证,但 5 天后,这仅在我的 PC 上进行身份验证,如果我在另一台 PC 上尝试,我的登录不会验证(工作)并将我重定向到登录页面。 为什么会这样?

我发现了一些关于cookie-sessions cookie-sessions吗? 如果是,我该如何使用它?

这是我当前的代码:

      const express = require('express')
      const bodyParser = require('body-parser')
      const mongoose = require('mongoose')
      const session = require('express-session')
      const passport =  require('passport')
      const passportLocalMongoose =  require('passport-local-mongoose')
      const _ = require('lodash')
      const app = express()
      app.use(express.static('public'))
      app.set('view engine', 'ejs')
      app.use(bodyParser.urlencoded({
          extended: true
      }))
      mongoose.connect("mongodb+srv://admin-Admin:password@cluster0-babnh.mongodb.net/collection", 
      {useNewUrlParser: true, useUnifiedTopology: true}).then(() => console.log('DB 
      Connected!')).catch(err => {
          console.log(err.message)
      })
      mongoose.set('useCreateIndex', true)

      app.use(session({
          secret: restricted.expressSession.secret,
          resave: false,
         saveUninitialized: false
      }))

      app.use(passport.initialize())
      app.use(passport.session())

      const userSchema = new mongoose.Schema ({
          email: String,
          password: String
      })

     userSchema.plugin(passportLocalMongoose)

     const User = new mongoose.model('User', userSchema)

     module.exports = mongoose.model('User', userSchema)

      passport.use(User.createStrategy())
      passport.serializeUser(User.serializeUser())
      passport.deserializeUser(User.deserializeUser()) 

     app.get('/', (req, res) => {
          res.render('login')
      })

     app.post('/', (req, res) =>{
          const user = new User({
              username: req.body.username,
              password: req.body.password
          })
          req.login(user, function(errLogin){
              if(errLogin) {
                  console.log(errLogin)
              } else{
                  passport.authenticate('local')(req, res, function(){
                      res.redirect('/home')
                  })
              }
         })
      })
var mongoUri = 'mongodb://username:password@foo.mongohq.com/port/db'

app.use(session({
      secret: restricted.expressSession.secret,
      resave: false,
      saveUninitialized: false
      store   : new MongoStore({url  : mongoUri})
}))

使用connect-mongo模块将 express session 存储在 mongoDb 中。

在 mongoose.set 之后,我放了这个:app.use(cookieSession({ maxAge: 24 60 60*1000, //24horas keys: [restricted.cookieSession.keys] }))

但是消息仍然出现:“警告:connect.session() MemoryStore 不是为生产环境设计的,因为它会泄漏 memory,并且不会扩展到单个进程。” 我还能改变什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM