- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在我的应用程序中使用了 connect
、passport
和 session.socket.io
模块。在 session.socket.io 的 connection
事件中,我收到一个错误:could not look up session by key: connect.sid
情况就像this one
我的服务器端代码是:
var mod_http = require('http');
var mod_connect = require('../../lib/node_modules/connect');
var mod_connectRoute = require('../../lib/node_modules/connect-route');
var mod_ejs = require('../../lib/node_modules/ejs');
var mod_SessionSockets = require('../../lib/node_modules/session.socket.io');
var mod_passport = require('../../lib/node_modules/passport'), LocalStrategy = require('../../lib/node_modules/passport-local').Strategy;
var mod_fs = require('fs');
var app = mod_connect();
var cookieParser = mod_connect.cookieParser('your secret sauce'),
sessionStore = new mod_connect.middleware.session.MemoryStore();
app.use(mod_connect.static(folder));
// Configure the app connection
app.use(cookieParser);
app.use(mod_connect.bodyParser());
app.use(mod_connect.session({ secret: 'logged' }));
app.use(mod_passport.initialize());
app.use(mod_passport.session());
app.use(mod_connectRoute(function (router) {
router.get('/', function (req, res, next) {
...
}
}
var server = mod_http.createServer(app),
io = require('../../lib/node_modules/socket.io').listen(server);
// Limit the messages shown.
io.set('log level', 2);
// Create a session.
var sessionSockets = new mod_SessionSockets(io, sessionStore, cookieParser);
// Fire when a browser install a connection. A page refresh closes the connection and creates new one.
sessionSockets.on('connection', function (err, socket, session) {
console.log(err);
console.log(sessionStore);
console.log('Hello!');
});
server.listen(4000);
客户端代码:
<!DOCTYPE html> <!-- HTML 5 -->
<html>
<head>
<link rel="stylesheet" type="text/css" href="/style.css">
<script src="/jquery-1.9.1.js"></script>
<meta charset="utf-8">
<title> Test </title>
</head>
<body>
<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
socket = io.connect('http://'+location.host);
</script>
<script src="/functions.js"></script>
...
</body>
</html>
当我打开 localhost:4000
页面时,我可以在 node.js 控制台上看到以下输出:
[Error: could not look up session by key: connect.sid]
{ sessions: {} }
Hello!
PS:由于我的声誉很低,我无法为讨论添加新标签,但我认为此讨论将需要标签 session.socket.io,如果有人可以补充,将不胜感激
最佳答案
解决这个问题的一个简单方法是使用 passport-socketio
下面的代码应该可以工作:
var passportSocketIo = require("passport.socketio");
io.use(passportSocketIo.authorize({
cookieParser: cookieParser,
secret: 'your secret sauce',
store: sessionStore,
success: onAuthorizeSuccess,
fail: onAuthorizeFail,
}));
io.sockets.on('connection', function(socket) {
console.log(socket.request.sid);
});
关于node.js - 连接+ session Socket.io+通行证 : Could not look up session by key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16034024/
我正在尝试设置代理用户名和密码。我看到了这篇文章 ( http://geckofx.org/viewtopic.php?id=832 ),我认为它可能与用户名/密码的设置类似,例如: Skybound
我创建了一个新的沙箱用户用于付费测试。我验证电子邮件到目前为止没有问题。之后,我尝试登录IOS(11)模拟器(IPhoneX),但出现错误: "incorrect username or passwo
我目前正在阅读:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/PassKit_
我正在考虑将 PassKit/Apple Wallet 支持添加到我的 iOS 应用程序中。但是,当用户调出我们的应用程序生成的通行证时,我需要让我的应用程序 ping 一个 RESTful 服务器。
$scope.getProfilePicture_180=function(token){ var res={}; Facebook.api( '/me',
我正在尝试在 LLVM 传递中使用 llvm::Module::getFunctionList() 返回的列表来迭代模块函数列表。 .我使用这样的循环: for (auto curFref =
我有一个 OneLogin 帐户并设置了 G Suite。一切正常,但我有几个问题: 配置 G Suite 后,如果用户登录 Gmail 撰写电子邮件,用户将被重定向到 OneLogin 登录页面。我
我正在开发 Xamarin Android 应用程序,我需要能够使用通行证(例如 PassKit 通行证 (JSON))。我需要能够在 ListVew 中列出所有通行证并能够打开和显示通行证。还可以将
我在我的应用程序中使用了 connect、passport 和 session.socket.io 模块。在 session.socket.io 的 connection 事件中,我收到一个错误:co
我是一名优秀的程序员,十分优秀!