Articles of express

在Angular / MEAN.io中路由安全漏洞?

我刚刚安装了MEAN栈(MongoDB,Express.js,AngularJS,Node.js),并打开了示例程序(在mean.io上find),他们有一个基本的应用程序,您可以login并创build博客“articles”只是为了testing等。 无论如何,我删除了“#!” 从URL中输出整个用户和文章模型,就像它们在数据库中一样。 它接缝,好像这样做使它停止路由通过Angular,而是使用快速路由,这只是JSON REST apis。 这是MEAN堆栈包中的一个缺陷,Angular作为一个整体,还是只是一个开发环境设置? 我无法想象,这将是一个巨大的缺陷,但也许我只是失去了一些东西.. 可复制的步骤: 按照http://mean.io上的安装说明进行操作 转到浏览器中的本地应用程序,并创build一个帐户和login 创build一篇文章 查看您刚刚创build的文章项目,并从URL中删除#!/,然后您可以看到已login的用户帐户的JSON对象以及散列的密码和salt以及文章对象。

model.save()的Backbone.js / express.js参数

我在客户端上使用了Backbone.js,在后端上使用了node.js,我在做一个“有限的”模型保存时遇到了一些麻烦,如下所示: http : //backbonejs.org/#Model-保存 正如在例子中,如果我这样做 book.save({author: "Teddy"}); 如何使用express.js访问保存的参数,即我只想保存到“作者”字段的事实? 我试过以下 req.body -> gives ALL parameters of the model being saved, I want only the 'author' field req.query -> empty 任何帮助非常感谢!

mongoose连接/模型:需要始终运行在打开?

我正在使用Mongoose 3,最明显的方式连接到数据库是 conn = mongoose.createConnection(…) conn.on("open", …) 问题是,我是否需要在公开callback中定义所有模型? 如果是这样,我将不得不创build一个initMongoose.coffee ,看起来像 # initMongoose.coffee mongoose = require "mongoose" module.exports = mongoose.createConnection … # modelExample.coffee conn = require "./initDatabase" conn.on "open", -> … define model? modeule.exports = model # I think this does not work? 我想我在Node docs的某个地方阅读,模块不能在像这样的callback中定义? 由于我只使用1个连接,我想我可以使用 mongoose.connect … 哪个不接受任何callback,所以我想是同步? 我可以定义所有的模型,然后connect()后查询吗? 它目前是有效的,但可能是因为它足够快。

带有引用数组的Mongoose模型模式:CastError:强制转换为ObjectId的值为“”

我用express.js和mongoosejs构build了一个博客网站。 一篇文章可能有一个或多个类别。 当我创build一个新的文章,我得到错误: { [CastError: Cast to ObjectId failed for value "[object Object]" at path "categories"] message: 'Cast to ObjectId failed for value "[object Object]" at path "categories"', name: 'CastError', type: 'ObjectId', value: [ [object Object] ], path: 'categories' } 有人能帮我吗? 相关代码如下所示: Article模型定义如下: var mongoose = require('mongoose'), Schema = mongoose.Schema; var ArticleSchema = new Schema({ […]

ExpressJS – 具有路由分离的Socket.IO

我试图让我的头ExpressJS和Socket.IO。 我有一个单独的文件,我从我的app.js包括我的路线: var express = require('express') , db = require('./db') , mongoose = require('mongoose') , models = require('./models/device') , http = require('http') , path = require('path') , app = express() , server = http.createServer(app) , io = require('socket.io').listen(server) , routes = require('./routes/myRoutes'); 但是,当我尝试从我的一个路由发出一个事件,我没有参考socket.io。 exports.update = function(req, res){ return Item.findById(req.params.id, function(err, item) { // Do some […]

Nodejs / mongodb-检查用户是否具有pipe理员权限(基于令牌的身份validation)

在我的express / mongoose应用程序中,我定义了verifyOrdinaryUser函数来检查用户是否在服务器上进行身份validation。 哪个效果很好,但是我已经在下面定义了verifyAdmin函数来检查用户是否也具有pipe理权限(我使用passport-local-mongoose模块来定义用户模式)。 正如你可以看到在verifyOrdinaryUser()函数中检查用户的令牌,它会加载一个名为解码的新属性的请求对象,我试图在verifyAdmin重用,这就是当我在postman中得到以下错误。 { "message": "Cannot read property '_doc' of undefined", "error": {} } 以下是 var User = require('../models/user'); var jwt = require('jsonwebtoken'); var config = require('../config.js'); exports.getToken = function (user) { return jwt.sign(user, config.secretKey, { expiresIn: 3600 }); }; exports.verifyOrdinaryUser = function (req, res, next) { // check header or url parameters […]

node.js / socket.io,cookie只在本地工作

我试图使用基于cookie的会话,但是它只能在本地机器上工作,而不能在networking上工作。 如果我删除会话相关的东西,它将在networking上工作很好… 你必须原谅缺乏高质量的代码,我刚刚开始使用节点/套接字等等,发现任何明确的指南是艰难的,所以我现在处于n00b领域。 基本上这是迄今为止从各种片段一起砍了大约10%的理解我实际上在做什么… 我在Chrome中看到的错误是: socket.io.js:1632GET http://192.168.0.6:8080/socket.io/1/?t=1334431940273 500(内部服务器错误) Socket.handshake ——- socket.io.js:1632 Socket.connect ——- socket.io.js:1671 套接字——- socket.io.js:1530 io.connect ——- socket.io.js:91 (匿名函数)——- / socket-test /:9 jQuery.extend.ready ——- jquery.js:438 并在服务器的控制台中,我看到: debugging – 提供静态内容/socket.io.js debugging – 授权 警告 – 握手错误没有cookie 我的服务器是: var express = require('express') , app = express.createServer() , io = require('socket.io').listen(app) , connect = require('express/node_modules/connect') , parseCookie […]

Webpack,开发中间件和静态文件

我有一个Web服务/ React / Redux项目与快递服务,我有一些麻烦理解他们如何融合在一起。 我的快车应用程序运行Webpack并提供我的根index.html文件,如下所示: const app = express(); const server = require("http").createServer(app); app.use(bodyParser.json()); app.use("/some/path", express.static(path.join(__dirname, "/public"))); // webpack middleware const compiler = webpack(webpackConfig); const webpackDevMid = require("webpack-dev-middleware"); const webpackHotMid = require("webpack-hot-middleware"); app.use(webpackDevMid(compiler, { noInfo: true, publicPath: webpackConfig.output.publicPath // '/static/' })); app.use(webpackHotMid(compiler)); app.get("/", (req, res) => { if (!req.cookies.access_token) return res.redirect("/login"); return res.sendFile(path.join(__dirname, "index.html")); }); […]

NodeJS,Express和Mongoose:调用过于缓慢

我有一个非常简单的nodeJS应用程序。 由于某种原因,服务器的响应时间差别很大。 这是我的app.js: var express = require('express'); var http = require('http'); var path = require('path'); var Models = require('./schema/schema.js'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.json()); app.use(express.urlencoded()); app.use(express.static(path.join(__dirname, 'public'))); app.use(function(req, res, next) { var start = Date.now(); res.on('header', function() { var duration = […]

如何使用路线来操纵导航栏?

我在layout.hbs中有一个导航栏: <div class="collapse navbar-collapse" id="collapse"> <ul class="nav navbar-nav navbar-right"> <li><a href={{sign}}>{{issign}}</a></li> <li><a href={{los}}>{{islog}}</a></li> <li><a href="/">Home</a></li> </ul> </div> 我想在旅途中更改内容,例如,当用户login时,我想将login文本更改为注销,并且还redirect到不同的页面。 我正在通过路线这样做。 router.get('/', function(req, res, next) { var vm = { title: 'Join Fatty-cruxifinier', sign: 'about', issign : 'SIGNUP', islog: 'LOGIN', los: 'login' }; res.render('signup', vm); }); router.post('/', function(req, res, next) { userServices.addUser(req.body, function(err){ if(err){ var vm = […]