使用Passport在Node JS中实现基于cookie的身份验证 [英] Implement cookie based authentication in Node JS with Passport

查看:95
本文介绍了使用Passport在Node JS中实现基于cookie的身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是我的server.js(app.js)。我正在使用带有护照的Express进行用户身份验证。但是,每当我重新启动节点服务器用户注销时。

Below is my server.js (app.js). I am using express with passport, for user authentication. But whenever I restart my node server user logsout.

我对nodejs还是很陌生,我想知道如何实现基于cookie的身份验证。因此,即使服务器启动,该用户也不会注销。我确定有些配置更改我找不到。

I am very new to nodejs, I was wondering how I could implement a cookie based authentication. So that user does not log out even if the server starts. I'm sure theres some config change which I have not able to find.

// server.js

// set up ======================================================================
// get all the tools we need
var express  = require('express');
var app      = express();
var port     = process.env.PORT || 80;
var mongoose = require('mongoose');
var passport = require('passport');
var flash    = require('connect-flash');

var morgan       = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser   = require('body-parser');
var session      = require('express-session');

var configDB = require('./config/database.js');

// configuration ===============================================================
mongoose.connect(configDB.url); // connect to our database

require('./config/passport')(passport); // pass passport for configuration

// set up our express application
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser()); // get information from html forms

app.set('view engine', 'ejs'); // set up ejs for templating

// required for passport
app.use(session({ secret: 'yassers' })); // session secret
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash()); // use connect-flash for flash messages stored in session

// routes ======================================================================
require('./app/routes.js')(app, passport); // load our routes and pass in our app and fully configured passport

// launch ======================================================================
app.listen(port);
console.log('The magic happens on port ' + port);


推荐答案

重新启动时会注销,因为它存储在 MemoryStore(RAM)。使用mongoStore存储您的会话mongodb。尝试以下代码:

Its logout when you restart your start because its stored in MemoryStore(RAM). Use mongoStore to store your session mongodb. Try below code:

var session = require('express-session');
var MongoStore = require('connect-mongo')(session);

var mongoStore = new MongoStore({
  url: 'your mongo db url'  
});

app.use(session({
  secret: 'your secret',
  saveUninitialized: true, // don't create session until something stored
  resave: false, //don't save session if unmodified
  store: mongoStore,
  cookie: {
    domain: 'domain name',    
    maxAge: 1000 * 24 * 60
  }
}));

这篇关于使用Passport在Node JS中实现基于cookie的身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆