[英]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.