使用passport.js在node.js中进行身份validation后,redirect到上一页

我试图build立一个使用node.js,express和passport.js的login机制。 login本身工作得相当不错,会话也很好地存储在redis中,但是在提示用户进行身份validation之前,将用户redirect到他所在的位置时遇到了一些麻烦。 例如,用户链接http://localhost:3000/hidden然后被redirect到http://localhost:3000/login但是我希望他再次被redirect到http://localhost:3000/hidden 。 这样做的目的是,如果用户随机访问一个页面,他需要首先login,他应该被redirect到/ login站点提供他的凭据,然后被redirect到他以前试图访问的网站。 这是我的login信息 app.post('/login', function (req, res, next) { passport.authenticate('local', function (err, user, info) { if (err) { return next(err) } else if (!user) { console.log('message: ' + info.message); return res.redirect('/login') } else { req.logIn(user, function (err) { if (err) { return next(err); } return next(); // <-? Is this line […]

什么是单主机Node.js生产应用程序的良好会话存储?

我正在使用Node的Express连接中间件。 Connect的内存会话存储不适合生产: Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak memory, and obviously only work within a single process. 对于更大的部署,mongo或redis是有意义的。 但是,在生产中的单主机应用程序有什么好的解决scheme?

节点gyp错误TRACKER:错误TRK0005:无法find:“CL.exe”。 该系统找不到指定的文件

我想安装Visual Studio社区2015,Python v2.7.3安装Windows 10机器上的bcrypt,但我得到以下错误。 节点版本v4.2.1 node-gyp v3.0.3 npm install bcrypt C:\Users\ASMIN\Desktop\M2\app>npm install bcrypt npm WARN package.json eapp@1.0.0 No description npm WARN package.json eapp@1.0.0 No repository field. npm WARN package.json eapp@1.0.0 No README data > bcrypt@0.8.5 install C:\Users\ASMIN\Desktop\M2\app\node_modules\bcrypt > node-gyp rebuild C:\Users\ASMIN\Desktop\M2\app\node_modules\bcrypt>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node -gyp.js" rebuild ) else (node rebuild ) Building […]

是node.js rmdirrecursion? 它会在非空目录上工作吗?

fs.rmdir的文档非常短,并不能解释当目录不为空时rmdir的行为。 问 :如果我尝试使用此API删除非空目录,会发生什么情况?

npm找不到package.json

我试图安装我下载的一些示例Express应用程序的依赖关系,但所有的应用程序都抛出相同的错误: c:\node\stylus>npm install -d npm info it worked if it ends with ok npm info using npm@1.1.1 npm info using node@v0.6.11 npm ERR! Couldn't read dependencies. npm ERR! Error: ENOENT, no such file or directory 'c:\node\stylus\package.json' npm ERR! You may report this log at: npm ERR! <http://github.com/isaacs/npm/issues> npm ERR! or email it to: npm ERR! […]

Nodejs:如何克隆一个对象

如果我克隆一个数组,我使用cloneArr = arr.slice() 我想知道如何在nodejs中克隆一个对象。

Express-mysql-session阻止passport deserializeUser运行

我有一个应用程序使用passport.js通过Facebooklogin用户,并试图使用express-mysql-session来保持其login状态。 如果我不包含express-mysql-session代码,那么护照serializeUser和deserializeUser函数就可以正常工作了…但是当我试图用express-mysql-session存储会话的代码时,deserializeUser函数不会不会受到打击,用户永远不会正确login。 server.js文件 var express = require('express'); var mysql = require('mysql'); var passport = require('passport'); var session = require('express-session'); var MySQLStore = require('express-mysql-session')(session); if (typeof process.env.OPENSHIFT_MYSQL_DB_HOST === "undefined"){ var options = { host : 'localhost', port : '3307', user : 'user', password : 'password', database : 'database', socketpath: '/var/run/mysqld/mysqld.sock' } } else { var options […]

基于Node.JS的电子商务平台

我知道这个问题以前曾经问过。 但是我看到反应相当过时(至less与我们的步调相比)。 所以我再次提出同样的问题。 我们即将启动一个基础项目,build立一个支持基本电子商务的多租户平台(稍后将扩展)和用于提供目录的基本CMS。 由于这是针对一个巨大的焦点市场,预计在某些事件上将达到20K(并发),我们正在从像平台一样的平台,并考虑build立自己的。 按照今天的date,唯一的“银子弹”就是node.js(双关),所以我们打算在后端使用节点html5 / KO,然后在mongoDB和MySQL之间继续辩论。 在这方面,很想知道是否有任何node.js / html5开源电子商务平台(以及半复杂的CMS)今天可用。 即使是testing版或alpha版也会这样做,所以它给了我们一个开始。

Visual Studio 2017 – Node.JS服务器进程 – closures?

我正在使用Visual Studio 2017中的ASP.NET应用程序,我注意到一个Node.JS:运行在1.3GB到1.8GB内存的服务器端Javascript进程。 我的IIS工作进程是它在VS 2015中的正常大小。 我的应用程序不包含任何Node.JS库。 我无法弄清楚如何closures这个Node.JS:服务器端Javascript进程。 对于我没有用的东西来说,它消耗了太多的记忆。 除了卸载VS 2017并切换回VS 2015之外,还有什么办法可以解决这个问题吗? 杀死任务pipe理器中的主进程不会影响VS中的任何内容,但是如果我转到“详细信息”选项卡并杀死单个正在运行的进程,则会使Visual Studio崩溃。 我拍了一个video,说明我杀了这个程序后,跑了我的本地网页(对不起,因为图片大小限制在2MB以内):

passport.js passport.initialize()中间件未被使用

我正在使用express + mongoose的节点,并尝试使用passport.js和restful api。 validation成功后,我一直收到这个exception(我在浏览器上看到了callbackurl): /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/utils.js:419 throw err; ^ Error: passport.initialize() middleware not in use at IncomingMessage.req.login.req.logIn (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/http/request.js:30:30) at Context.module.exports.delegate.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/middleware/authenticate.js:194:13) at Context.actions.success (/Users/naorye/dev/naorye/myproj/node_modules/passport/lib/passport/context/http/actions.js:21:25) at verified (/Users/naorye/dev/naorye/myproj/node_modules/passport-facebook/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:133:18) at Promise.module.exports.passport.use.GitHubStrategy.clientID (/Users/naorye/dev/naorye/myproj/config/passport.js:91:24) at Promise.onResolve (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:162:8) at Promise.EventEmitter.emit (events.js:96:17) at Promise.emit (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:79:38) at Promise.fulfill (/Users/naorye/dev/naorye/myproj/node_modules/mongoose/node_modules/mpromise/lib/promise.js:92:20) at /Users/naorye/dev/naorye/myproj/node_modules/mongoose/lib/query.js:1822:13 我读过,我应该把app.use(passport.initialize()); 和app.use(passport.session()); 在app.use(app.router);之前app.use(app.router); 这就是我所做的。 这是我的express.js注册中间件: var express = require('express'), mongoStore = […]