如何删除快递+护照js注销cookie?

我想“在注销时删除cookies”。 我无法做到这一点。 我googlesearch答案,并find以下方法:

  1. 为cookie分配新的过期date

    res.cookie('connect.sid', '', {expires: new Date(1), path: '/' });

  2. 使用下面的行删除cookie

    res.clearCookie('connect.sid', { path: '/' });

我单独尝试了两种方法,但不删除cookie。

这是我的代码:

routes.js

 module.exports = function(app, passport, session){ app.get('/', function(req, res) { res.render('index.ejs'); }); app.get('/login', function(req,res){ res.render('login.ejs',{message:req.flash('loginMessage')}); }); app.get('/signup',checkRedirect , function(req, res) { res.render('signup.ejs',{message: req.flash('signupMessage')}); }); app.get('/profile', isLoggedIn, function(req,res) { res.render('profile.ejs', { user :req.user }); }); app.post('/signup', passport.authenticate('local-signup', { successRedirect : '/profile', failureRedirect : '/signup', failureFlash : true })); app.post('/login', passport.authenticate('local-login', { successRedirect : '/profile', failureRedirect : '/login', failureFlash :true })); app.get('/logout',function(req,res){ res.cookie('connect.sid', '', {expires: new Date(1), path: '/' }); req.logOut(); res.clearCookie('connect.sid', { path: '/' }); res.redirect('/'); }); function isLoggedIn(req, res, next){ if(req.isAuthenticated()) return next(); console.log("hiii"); res.redirect('/'); } 

};

server.js

  var express = require('express'); var app = express(); var port = process.env.PORT || 3000; var mongoose = require('mongoose'); var passport = require('passport'); var flash=require('connect-flash'); var morgan=require('morgan'); var bodyParser = require('body-parser'); var cookieParser=require('cookie-parser'); // var session=require('express-session'); var RedisStore = require('connect-redis')(session); var redis = require("redis"); var redis_client = redis.createClient(); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); var configDb=require('./config/database.js'); mongoose.connect(configDb.url); require('./config/passport')(passport); app.use(morgan('dev')); app.use(cookieParser()); app.use(bodyParser()); app.set('view engine', 'ejs'); app.use(session({ store: new RedisStore({ host: '127.0.0.1', port: 6379, client: redis_client }), secret : 'foo', resave: false, saveUninitialized: false })); app.use(function (req, res, next) { if (!req.session) { return next(new Error('oh no')); // handle error } next(); }); }); app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); require('./app/routes')(app, passport, session); app.listen(port, function(){ console.log('server is at port' + port); }); 

您可以在注销path中使用req.session.destroy来销毁下面的会话是参考代码:)

 app.get('/logout', function(req,res){ req.logOut(); req.session.destroy(function (err) { res.redirect('/'); //Inside a callback… bulletproof! }); }); 

所以这里没有任何build议为我工作,直到我意识到我在做一个愚蠢的事情:

使用Github,我设置了一个OAuth应用程序(您可以在configuration文件设置中执行此操作),并将其用于身份validation。

做了一个魅力! 但是,即使从我的应用程序注销,它也总是将相同的configuration文件发回给我。 清除所有的浏览器存储没有解决它。

然后,我明白,我仍然login到我的github帐户(这是我总是得到的configuration文件)…一旦我退出,那么OAuth应用程序提示我再次为我的用户/密码。