我正在编写一个nodejs应用程序,我想用它作为一个web应用程序以及一个API提供程序。 一旦用户通过身份validation,我想为该用户分配一个令牌用于后续请求。 这对Web应用程序的护照很有效,因为我只是用会话中的令牌序列化和反序列化用户。 但是,在响应API请求时,不存在用于存储会话信息的Cookie。 理想情况下,护照会在会话和请求主体中查找令牌。 有什么办法来configuration护照来完成这个?
如何与Socket.io 1.0和Express 4.x共享会话? 我使用Redis商店,但我相信这不重要。 我知道我必须使用中间件来查看cookie和获取会话,但不知道如何。 我搜查,但找不到任何工作 var RedisStore = connectRedis(expressSession); var session = expressSession({ store: new RedisStore({ client: redisClient }), secret: mysecret, saveUninitialized: true, resave: true }); app.use(session); io.use(function(socket, next) { var handshake = socket.handshake; if (handshake.headers.cookie) { var str = handshake.headers.cookie; next(); } else { next(new Error('Missing Cookies')); } });
我正在使用passportJS,我想提供更多的req.body.username和req.body.password到我的身份validation策略(passport-local)。 我有3个表单字段: username , password ,& foo 我如何从本地策略访问req.body.foo ,如下所示: passport.use(new LocalStrategy( {usernameField: 'email'}, function(email, password, done) { User.findOne({ email: email }, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Unknown user' }); } if (password != 1212) { return done(null, false, { message: 'Invalid password' }); […]
我刚刚开始在Node.js应用程序中学习Express 4.0,并发现它生成了./bin/www文件,其中只有应用程序服务器和端口设置被写入,其他所有其他类似中间件和路由的文件都被定义./app.js文件。 但是,我不确定这是./bin/www 。 我已经使用了Express 3.x,并且我一直在相同的./app.js文件中定义服务器和端口设置以及路由和中间件,并且使用node app.js启动了我的节点应用程序。 那么使用./bin/www什么./bin/www ? 它是否仅将服务器和端口定义与其他人分开? 现在,当我使用express生成器创build包时, package.json包含以下定义: "scripts": { "start": "node ./bin/www" } 但是,我不知道是否应该使用node ./bin/www或npm start启动我的应用npm start 。 我应该运行哪个命令来启动我的应用程序? 而且,当我将应用程序部署到heroku时,我应该在Procfile文件中写什么? web: node app.js够了吗?
我一直在尝试使用正在处理的node.js项目来设置HTTPS。 我基本上遵循这个例子的node.js文档 : // curl -k https://localhost:8000/ var https = require('https'); var fs = require('fs'); var options = { key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem') }; https.createServer(options, function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(8000); 现在,当我这样做 curl -k https://localhost:8000/ 我明白了 hello world 如预期。 但是,如果我这样做 curl -k http://localhost:8000/ 我明白了 curl: (52) Empty reply from server 回想起来,这似乎很明显,它会这样工作,但同时,最终访问我的项目的人不会打字https :// yadayada,我希望所有的stream量从他们打的时候都是https网站。 […]
res.send和res.json之间有什么实际差别,因为两者似乎都执行相同的响应客户端操作。
问题1: 通过npm安装bootstrap的目的是什么? 我以为npm是为了服务器端模块。 服务引导文件比使用CDN更快吗? 问题2: 如果我是npm install bootstrap,我将如何指向bootstrap.js和bootstrap.css文件?
我运行一个Express js应用程序与socket.io为一个聊天的Web应用程序,我得到了以下错误在24小时内大约5次随机。 节点进程被永久封装,并立即重新启动。 问题是,重新启动快速将我的用户踢出他们的房间,没有人愿意。 Web服务器由HAProxy代理。 没有套接字稳定性问题,只使用websocket和flashsockets传输。 我无法重现这个故意。 这是节点v0.10.11的错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET //alternatively it sa 'write' at errnoException (net.js:900:11) at TCP.onread (net.js:555:19) error: Forever detected script exited with code: 8 error: Forever restarting script for 2 time 编辑(2013-07-22) 添加了socket.io客户端error handling程序和未捕获的exception处理程序。 似乎这个错误发生了: process.on('uncaughtException', function (err) { console.error(err.stack); console.log("Node NOT […]
假设我的示例url是 http://example.com/one/two 我说我有以下路线 app.get('/one/two', function (req, res) { var url = req.url; } url的值将是/one/two url 。 如何在Express中获得完整的url ? 例如,在上面的情况下,我想收到http://example.com/one/two 。
出于某种原因,我无法redirect到/博客,一旦我的login完成。 在我的login控制器中,我有以下。 module.exports = { post: function(req, res) { var login = req.body['login']; if (login && req.body['login']['password'] == "password") { console.log('Granted access'); res.send({redirect: '/blog'}); } else { console.log('wrong password'); res.redirect('back'); } } }; jquery ajax $(document).ready -> $('#login-button').click () -> $.ajax url: '/login' type: 'POST' data: $('#Password').serialize() dataType: 'json' success: (data, textStatus, jqXHR) -> if […]