Node.js express.js、passports.js:为什么要共享会话?

Node.js express.js、passports.js:为什么要共享会话?,node.js,express,passport.js,Node.js,Express,Passport.js,正在尝试使用express.js和passport.js设置身份验证。 也许是个愚蠢的问题,但我不明白这些东西是怎么工作的 我建立了facebook战略,现在可以用facebook认证用户。我一直坚持的是: 如果我在一个客户端(浏览器)上对用户进行身份验证,它将在发出请求的所有其他客户端上进行身份验证。为什么呢?我应该如何配置express和passport,以便在生产中正确、安全地使用它 我的express配置: app.use(express.bodyParser()); app.use(e

正在尝试使用express.js和passport.js设置身份验证。 也许是个愚蠢的问题,但我不明白这些东西是怎么工作的

我建立了facebook战略,现在可以用facebook认证用户。我一直坚持的是:

如果我在一个客户端(浏览器)上对用户进行身份验证,它将在发出请求的所有其他客户端上进行身份验证。为什么呢?我应该如何配置express和passport,以便在生产中正确、安全地使用它

我的express配置:

app.use(express.bodyParser());
app.use(express.methodOverride());

app.use(express.cookieParser());
app.use(express.session({ secret: 'secret' }));

app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static('public')); 
不要真的获取所有的身份验证信息。客户端经过身份验证后是否应该出现一些cookie

UPD:

Passport配置:

passport.serializeUser(function(user, done) {
    done(null, user._id);
});

passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
        done(err, user);
    });
});


passport.use(new FacebookStrategy({
        clientID: nconf.get('facebook:appId'),
        clientSecret: nconf.get('facebook:appSecret'),
        callbackURL: nconf.get('facebook:callbackUrl')
    },
    function(accessToken, refreshToken, profile, done) {
        User.findOrCreateExternal(profile, done)
    }
));
路线

app.get('/api/users/facebook', users.facebookLogin);
app.get('/api/v1/users/facebook/callback', users.facebookLoginCallback);
行动:

    facebookLogin: function(req, res, next){            
        return passport.authenticate('facebook', {
            scope: nconf.get('facebook:permissions')
        })(req, res, next)
    },

    facebookLoginCallback: function(req, res, next){
        return passport.authenticate('facebook', {
            successRedirect: process.env.FB_SUCCESS_REDIRECT,
            failureRedirect: process.env.FB_FAILURE_REDIRECT

        })(req, res, next)
    },
UPD2:

获取当前已验证用户的路由和操作:

app.get('/api/users/logged', users.getLoggedInUser)
行动代码:

getLoggedInUser: function(req,res){
    //Currently last authenticated user is send to all clients that make requests.
    res.send({user: req.user || false})
}

问题是我使用的中间开发web服务器(用于服务开发资产、livereload等)将http请求错误地传输到api服务器。

如何使用passport.js以及如何验证路由?很好,如何确保用户可以请求路由?嗯。。。不使用。。请参阅我的UPD2以回答问题。似乎没有建立会话(客户端上没有cookies),不确定如何正确处理…@Jean-Philippe Leclerc对这个问题有何评论?