护照对象空没有被调用的护照/快速应用程序,而不是调用反序列化用户

问题描述:

我有一个angularjs应用程序在不同的域调用请求到一个基于表达式的API。例如,我有一个在localhost:9000上运行的应用程序,并连接到api @ localhost:3000。快递是3.51,护照:0.1.18,Angularjs:1.2护照对象空没有被调用的护照/快速应用程序,而不是调用反序列化用户

为了表达我已经设置CORS并设置允许凭据真:

app.use(function (req, res, next) { 
    res.header('Access-Control-Allow-Credentials', true); 
    res.header('Access-Control-Allow-Origin', req.headers.origin); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH'); 
    res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'); 
    next(); 
}); 

路由器之前我初始化护照:

app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(flash()); 
app.use(passport.initialize()); 
app.use(passport.session());* 
app.use(app.router); 

在我AnguarJS前端我设置的默认值在我的http请求使用的凭据:

$httpProvider.defaults.withCredentials = true; 

我错过了什么?登录后,我确实看到serializeUser被调用。在随后的请求,我看到了饼干的头被发送:

GET /api/shows?themes=true HTTP/1.1 
Host: localhost:3000 
Connection: keep-alive 
Accept: application/json, text/plain, */* 
Origin: http://localhost:9000 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.122 Safari/537.36 
Referer: http://localhost:9000/ 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Cookie: __distillery=OHFOIWEFOWEIJFO2352039832904BLAH; connect.sid=s%lweifjeill32ij3ri3KSLIJSEF.selfijseilfjsefeljkfe%2B%2BqUeXF0k 
If-None-Match: "-2134790151" 

然而deserializeUser不会被调用,因为护照对象是req.session空。我错过了什么?我也有一个登录页面在同一个域(localhost:3000)和登录/护照工作正常。所以我认为它必须对跨域或标题设置做些什么,但我不知道如何调试它。

更新 - 如果我将我所有的前端代码到API应用(以便有情况发生,认证和会话工作正常没有跨域...

原来的所有设置都正确,但在初始登录时,我发送了一个带有用户名/密码和{withCredentials: false}的发布请求,这会创建一个新的会话,但该cookie正在引用到现有会话。一旦我评论了这一点,我就能够开始工作。