用户会话 cookies process_Nodejs /passport
User Session cookies process_Nodejs /passport
我正在尝试创建会话-cookie 以保持用户登录,然后对某些内容进行一些授权,但问题是这个系统太复杂了,会话、cookie、存储'内存'
因为我在许多网站上读到,仅会话 cookie 将信息存储在浏览器内存中,并且在浏览器会话期间可用。换句话说,存储在会话 cookie 中的数据从存储时起一直可用,直到浏览器关闭。在此期间从一页移动到另一页不会擦除数据。
我想使用的是使用下面的配置为每个使用护照的用户创建会话,但我没有成功,
代码会话在下面 app.js
require('./models/db')
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');
const passport = require('passport');
const flash = require('connect-flash');
const session = require('express-session');
const bodyParser = require('body-parser')
const app = express();
// Passport Config
require('./config/passport')(passport);
// EJS
app.use(expressLayouts);
app.set('view engine', 'ejs');
app.use('/public/uploads',express.static(__dirname + '/public/uploads'))
// Express body parser
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
// Express session
app.use(
session({
secret: 'secret',
resave: true,
saveUninitialized: true
})
);
// Passport middleware
app.use(passport.initialize());
app.use(passport.session());
// Connect flash
app.use(flash());
// Global variables
app.use(function(req, res, next) {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
next();
});
// Routes
app.use('/', require('./routes/index.js'));
app.use('/gallery',require('./routes/gallery.js'));
app.use('/users', require('./routes/users.js'));
app.use('/me', require('./routes/publish.js'))
app.use('/api',require('./routes/ChangePassword'));
app.use('/post', require('./routes/home.js'))
const PORT = process.env.PORT || 5000;
app.listen(PORT, console.log(`Server started on port ${PORT}`));
并且 user.js
登录的路由在
下面
router.post('/login', (req, res, next) => {
passport.authenticate('local', {
successRedirect: '/users/home',
failureRedirect: '/users/login',
failureFlash: true
})(req, res, next);
});
关于如何使用高效流程实现它的任何建议?
此致,
请记住,在使用 express.js 时,中间件的顺序很重要。您在 passport.js 之前使用 EJS 中间件。这就是为什么在初始化会话之前呈现页面的原因。
我正在尝试创建会话-cookie 以保持用户登录,然后对某些内容进行一些授权,但问题是这个系统太复杂了,会话、cookie、存储'内存'
因为我在许多网站上读到,仅会话 cookie 将信息存储在浏览器内存中,并且在浏览器会话期间可用。换句话说,存储在会话 cookie 中的数据从存储时起一直可用,直到浏览器关闭。在此期间从一页移动到另一页不会擦除数据。
我想使用的是使用下面的配置为每个使用护照的用户创建会话,但我没有成功,
代码会话在下面 app.js
require('./models/db')
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');
const passport = require('passport');
const flash = require('connect-flash');
const session = require('express-session');
const bodyParser = require('body-parser')
const app = express();
// Passport Config
require('./config/passport')(passport);
// EJS
app.use(expressLayouts);
app.set('view engine', 'ejs');
app.use('/public/uploads',express.static(__dirname + '/public/uploads'))
// Express body parser
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
// Express session
app.use(
session({
secret: 'secret',
resave: true,
saveUninitialized: true
})
);
// Passport middleware
app.use(passport.initialize());
app.use(passport.session());
// Connect flash
app.use(flash());
// Global variables
app.use(function(req, res, next) {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
next();
});
// Routes
app.use('/', require('./routes/index.js'));
app.use('/gallery',require('./routes/gallery.js'));
app.use('/users', require('./routes/users.js'));
app.use('/me', require('./routes/publish.js'))
app.use('/api',require('./routes/ChangePassword'));
app.use('/post', require('./routes/home.js'))
const PORT = process.env.PORT || 5000;
app.listen(PORT, console.log(`Server started on port ${PORT}`));
并且 user.js
登录的路由在
router.post('/login', (req, res, next) => {
passport.authenticate('local', {
successRedirect: '/users/home',
failureRedirect: '/users/login',
failureFlash: true
})(req, res, next);
});
关于如何使用高效流程实现它的任何建议?
此致,
请记住,在使用 express.js 时,中间件的顺序很重要。您在 passport.js 之前使用 EJS 中间件。这就是为什么在初始化会话之前呈现页面的原因。