msm*_*nov 8 authentication mongodb node.js express passport.js
我有两个nodejs服务器(web-server,socket-server),它们通过socket.io相互连接.在Web服务上,我使用express.js和passport.js作为身份验证中间件.
这是我的网络服务器配置:
var express = require('express'),
mongo = require('mongodb'),
io = require('socket.io'),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
MongoStore = require('connect-mongo')(express);
app.configure(function () {
app.use(express.cookieParser());
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.session({
secret: 'keyboard cat',
store: new MongoStore({
db: 'MyDatabase'
})
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static(__dirname + '/htdocs'));
});
Run Code Online (Sandbox Code Playgroud)
当我使用connect-mongo时,它会为每个http请求创建一个新会话.
此元素使用登录请求创建:
{
"_id" : "UCnXade6Bk6ofOZ+jiEgzyH8",
"session" : "{\"cookie\":{\"originalMaxAge\":31536000000,\"expires\":\"2014-03-07T13:07:45.703Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"50cae08806e31ea2e5634e3f\"}}",
"expires" : new Date("7.3.2014 19:07:45")
}
Run Code Online (Sandbox Code Playgroud)
每当我按F5或接受套接字时,此元素就会创建.
{
"_id" : "JhypbYFtj1CGOK/ylMhG8+Yk",
"session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}",
"expires" : new Date("21.3.2013 19:03:38")
}
Run Code Online (Sandbox Code Playgroud)
当web-server采用套接字连接时,connect-mongo会创建新会话.每分钟大约有50个新文档.
可能是什么原因?
UPDATE
在更新页面的情况下,帮助提示添加app.use(express.favicon()).
套接字问题仍然存在.
我的套接字 - 服务器代码
function sendPortalJSON (portal_id, data, _event) {
https.get({
host : ....,
port : ....,
path : "/" + _event + "?data=" + encodeURIComponent( JSON.stringify (data))
}).on('error', function (err) {
});
}
...
sendPortalJSON(1, agent_data[i].d, "cpu-details");
Run Code Online (Sandbox Code Playgroud)
在Web服务器上:
app.get('/cpu-details', function (req, res) { });
Run Code Online (Sandbox Code Playgroud)
首先,尝试将静态中间件移至会话中间件之前。另外,某些浏览器处理请求的方式/favicon.ico有点奇怪,因此请尝试使用它express.favicon()看看是否可以解决您的问题。
所以像这样:
...
app.use(express.favicon());
app.use(express.static(__dirname + '/htdocs'));
app.use(express.session({...});
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2448 次 |
| 最近记录: |