Articles of 表示

如何正确使用passport.js实现serializeUser?

好的,所以我只是进入了MEAN堆栈,我试图用Passport.js构build一个应用程序。 我只是开始用户序列化来维护会话。 在他们的例子中,Passport使用这个序列化和反序列化: passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); 所以,我的问题是:这个例子被认为是安全的? 如果我理解了这个权利,那么这不是说客户端可以伪造用户标识以login为具有该标识的用户? 我想我要问的是,他们的例子被认为是“安全的”,是一种正确的做事方式,或者是希望你改变这些function来产生独特的序列化。 如果这被认为是安全的,那么我想我错过了一些关于如何工作的东西,我很乐意填补。 另一方面,如果这是不安全的,我希望自己写一些函数来代替这些函数,那么下面这样做是否有效和安全: 在用户序列化后,生成一个随机散列并将其放入用户的数据库条目中。 随机哈希是代表该用户的序列号。 在反序列化之后,查找数据库中的随机哈希并返回相应的用户。 如果没有发现散列抛出某种错误。 用户注销时,从数据库中的条目中删除其串行散列。 如果直到这里我的逻辑是有效的,那么生成这个随机哈希的正确方法是什么?

在express中访问路由文件夹中的公共静态文件

我试图从公用文件夹访问一个静态的“home.html”文件。 该应用程序的体系结构是: 上市 home.html的 路线 index.js 意见 myapp.js myapp.js: var express = require('express'); var path = require('path'); var routes = require('./routes/index'); var app = express(); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); index.js: var express = require('express'); var router = express.Router(); router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); […]

节点/快速路由问题 – 调用不正确的path

一切似乎工作正常,但是当试图达到“/职位/新”我得到“TypeError:无法读取属性'标题'的空引用'/ routes / posts.js:24'在'/:标题'GET方法。 任何想法为什么? '路由/ posts.js' var express = require('express'); var router = express.Router(); var mongoose = require('mongoose'); var Post = mongoose.model('posts'); /* posts displays*/ // posts index router.get('/', (req, res) => { Post.find((err, posts) => { res.render( 'posts/index', { title: 'Get All the Posts!', posts: posts } ); }); }); // single post […]

Heroku Node Express Stormpath'API密钥ID和秘密是必需的'

我一直在关注Heroku Stormpath文档来设置一个简单的快速应用程序。 我的server.js文件中的代码如下所示: 'use strict'; var express = require('express'); var pg = require('pg'); var stormpath = require('express-stormpath'); var app = express(); app.use(express.static('public')); app.use(stormpath.init(app, { apiKeyFile: '/.stormpath/apiKey.properties', apiKeyId: process.env.STORMPATH_API_KEY_ID, apiKeySecret: process.env.STORMPATH_API_KEY_SECRET, secretKey: process.env.STORMPATH_SECRET_KEY, application: process.env.STORMPATH_URL, })); app.set('port', (process.env.PORT || 5000)); app.listen(app.get('port'), function(){ console.log('Node app is running on port', app.get('port')); }); 原谅我作为Stormpath的新手。 我也浏览了Express-Stormpath文档,但在本地运行应用程序时,我仍然收到以下错误消息: Node app is running […]

续订express.js的Cookie会话

我正在使用用于Expresss.js的cookie会话模块来处理会话。 我希望会话在每次页面加载(或Ajax调用)时更新。 这就是他们通常在任何地方工作。 文件没有说一个字。 我试过这样做,但没有成功: app.use(function(req,res,next ){ req.sessionOptions.maxAge = 20*1000; return next(); });

如何在进行大量修改的同时运行我的MEAN堆栈代码,而无需重新启动`npm start`?

我用npm start运行我的MMEAN栈应用程序(Mongoose,MongoDB,Express,AngularJS和Node.js)。 但是,无论何时我在代码中进行更改,都必须退出并重新启动npm start ,以便更改显示在我的Web应用程序中。 现在越来越讨厌,因为我仍在构build我的应用程序,所以我正在做出很多改变。 那么我能做些什么来以平滑的方式运行我的MMEAN栈应用程序? 这是基于本教程的我的应用程序的目录结构: HTML views/ Angular.js public/javascript/ Express.js routes/ Node.js app.js Mongoose js models/, connected in app.js Mongo db connected in app.js

REST满服务,Post不能正确保存到数据库

REST满服务,Post不能正确保存到数据库 我有节点+快递+mongoose我的模特: var mongoose = require('mongoose'), Schema = mongoose.Schema; var bookModel = new Schema({ title: { type: String }, author: { type: String }, genre: { type: String }, read:{ type: Boolean, default:false } }); module.exports = mongoose.model('Book', bookModel); 我的App.js var express = require('express'), mongoose = require('mongoose'), bodyParser = require('body-parser'); var db = mongoose.connect('mongodb://localhost/bookApi'); var […]

使用Express中间件进行每个请求的模块configuration?

假设对我的应用程序的每个请求都包含一个MAGIC头,并且我想在某处注入该头的值,而不更新所有的请求方法。 听起来这是中间件的工作,对吧? 但是这将是线程安全的吗? 在有多个请求可能同时在运行的环境中,有没有办法使用Express中间件来执行此操作? 换句话说,我在询问示例代码中的Express中间件是设置全局共享variables还是每个请求都由独立线程处理,其中myconfig是每个请求的独立副本。 示例代码: var assert = require('assert'); var sleep = require('sleep'); var express = require('express'); var app = express(); var myconfig = {}; app.use(function(req, res, next) { myconfig.MAGIC = req.headers['MAGIC']; next(); }); app.get('/test', function(req, res) { // Pause to make it easy to have overlap. sleep(2); // If another request comes in […]

如何在nodejs中的集群之间共享可变数据?

我正在使用集群运行我的快速应用程序。 我的主人有一些需要在我的工作人员之间共享的variablescaching。 我可以这样做,因为使用物理数据存储对我来说是不可行的? if (cluster.isMaster) { // Create a worker for each CPU global.my_cache_variable = 'xyz'; console.log("Number of cpu cores", cCPUs); for (var i = 0; i < cCPUs; i++) { cluster.fork(); } cluster.on('online', function (worker) { console.log('Worker ' + worker.process.pid + ' is online.'); }); cluster.on('exit', function (worker, code, signal) { console.log('worker ' + […]

用mongoose更新对象会导致循环

在我的nodejs API应用程序中,我有这样的路线: router.post('/startuserseries', function(req, res, next){ if(!req.body.username){ return res.status(400).json({message: 'Geen username'}); } User.findOne({ 'username': req.body.username}, function(err, foundUser){ if(err) return next(err); if (foundUser) // check the value returned for undefined { foundUser.isdoingchallenges = true; foundUser.save(function (err) { if(err) { console.error('ERROR!'); } }); } }); }); 当我在邮递员叫这条路线时,请求永远不会结束。 我曾尝试使用PUT,但也没有工作,我尝试了各种结构的代码,但都没有工作。