Tag: 表示

在express / node中使用全局variables

试图find一个解决scheme,我发现了4个解决scheme,但我想知道哪一个更好/最好的做法。 为什么! :P 1.使用req.app.get() // app.js app.set('settings', { domain: 'http://www.example.org' }); // other file console.log(req.app.get('settings')); 2.使用req.app.settings(与上面类似) // app.js app.set('settings', { domain: 'http://www.example.org' }); // other file console.log(req.app.settings.settings); 3.导出应用程序对象,所以我可以访问app.get()没有req对象 // app.js app.set('settings', { domain: 'http://www.example.org' }); module.exports = app; // other file var app = require('../app'); console.log(app.get('settings')); 4.使用全局variables。 可能是个坏主意,但是…不是“设置”是一个全球性的东西吗? (我可以避免重复使用,所以我没有得到范围问题) // app.js settings = { domain: […]

如何保护/ admin下的路由,何时get / admin /不pipe检查login状态

我有一个pipe理员后端希望通过检查login状态来保护。 我写了一个/pipe理路线来检查用户是否login,如果不是,它应该redirect到/pipe理/login,如果是的话,它应该呈现login。 但如何扩展到包括/pipe理/testing和/pipe理/任何,所以每次用户尝试访问/pipe理/ *,它应该检查用户是否login。 我的/pipe理员路线: app.get('/admin', Admin.index); 检查login或不: exports.index = function(req, res) { if (req.session.user == null){ if (req.cookies.userName == undefined || req.cookies.password == undefined){ res.redirect('/admin/login'); } else { var data = { userName: req.cookies.userName, password: req.cookies.password } AccountManager.AutoLogin(data, function(err, result){ if (!err) { console.log('login: '+result); req.session.user = result; res.render('admin/index', { title: 'Admin Control Center' […]

Cron不能在nodejs中一致地工作

我不能定期使用unix cron与nodejs工作,所以我试图使用node-cron来代替。 我的问题是,它似乎运行不一致,如果有的话。 有时我会看到日志logging的发生,表明它正在运行,有时我不会。 为什么? 是否有一些窍门让我失去了工作? 这是我的代码: 在app.js中,我有一个启动函数来引导我的应用程序的一切。 其中我有这个: runcron.checkstuff.start(); runcron被定义为: runcron = require('./lib/cronjobs') 那个需要的文件,./ ./lib/cronjobs.js是: 'use strict'; var cronjob = require('cron').CronJob, logger = require('./logger').winston(); var runcron = { checkstuff: new cronjob({ cronTime: '*/5 * * * *', onTick: function () { logger.info('in cron onTick…'); }, start: true }) }; module.exports = runcron; 这是我的理解,我应该看到我的logging信息“在cron onTick […]

Passport.js LocalStrategy返回401,尽pipe成功的反序列化

我读了很多类似的话题,但没有发现像我的东西。 这是我在控制台中看到的: 85.114.2.255 – – [Thu, 10 Apr 2014 11:46:36 GMT] "GET /login HTTP/1.1" 200 >>>>>>>>>>>>>>>>>>>>>>>>>>> Local Authentication Executing (default): SELECT * FROM `phpfox_user` WHERE `phpfox_user`.`email`='zelibobla@gmail.com' LIMIT 1; <<<<<<<<<<<<<<<<<<<<<<<<<< SUCCESS ************************** SERIALIZING 13051 85.114.2.255 – – [Thu, 10 Apr 2014 11:46:37 GMT] "POST /login HTTP/1.1" 302 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESERIALIZING 13051 Executing (default): SELECT * FROM `phpfox_user` […]

Ember + Sails + Websockets用户authentication

我使用Ember Sails适配器通过websockets加载我的Ember模型。 这一切都很好。 现在,我从来没有真正使用过Ember的用户身份validation,我有点挣扎。 使用Sails Auth生成器我创build了后端身份validation。 当我注册一个用户并成功login后端时,会记住哪个用户已经login(由于创build的cookie)。 我有几个模型的小游戏: App.User = DS.Model.extend({ username: DS.attr(), email: DS.attr(), cards: DS.hasMany('card') }); App.Game = DS.Model.extend({ gameStatus: DS.attr(), cards: DS.hasMany('card') }); App.Card = DS.Model.extend({ clientSeed: DS.attr(), game: DS.belongsTo('game'), user: DS.belongsTo('user') }); 我怎样才能确保我连接我的后端用户与Ember? 最好使用websockets(socket.io)。

白名单与nodejs文件隐藏源代码

我最近把我的错误日志与getsentry.com集成在一起 。 现在我的问题是,我不得不生成一个源地图,所以基本上任何人用现代浏览器现在可以看到我的原代码完全评论。 我正在寻找一种方法来允许访问源映射文件只有特定的ips和/或nodejs的子网,因为我使用的是heroku。 我想它会涉及使用像https://www.npmjs.org/package/express-ipfilter或https://www.npmjs.org/package/ip 。 但是仍然想着如何创build一个“路由”到文件并评估ips的中间环节

cookie maxAge和expiry之间有什么区别?

我在NodeJS,快递应用程序,我正在使用Cookie的一些function,我的应用程序。 我需要设置cookie的一个月的生活。 为此,我将cookie maxAge设置为days*hoursPerDay*minutesPerHour*secondsPerMinute*1000以实现一个月的时间30*24*60*60*1000 = 2592000000 。 然而,在我的cookies的浏览器到期时间接近10个小时。 我错过了什么,我的计算错了? 或者我正在使用错误的属性( maxAge )? 还有什么是cookies的maxAge和expiry属性之间的区别?

使用Express和Jade模板的Node.js不显示leaflet.js地图

我正在尝试使用Jade模板在页面上放置一个地图。 模板看起来像这样: html head script(src='http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js') link(rel='stylesheet', href='http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css') script. var map = L.map("map").setView([51.505, -0.09], 13); $(document).ready(function() { L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'}).addTo(map); }); body #map(style='height: 500px;') 查看页面时,生成的HTML如下所示: <html> <head> <script src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script> <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css"/> <script> var map = L.map("map").setView([51.505, -0.09], 13); $(document).ready(function() { L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'}).addTo(map); }); </script> </head> <body> <div id="map" […]

节点js redis遍历每个散列键值

我对redis&node非常陌生,现在我试图通过一些我已经创build并打印出来的testing哈希键进行循环来筛选结果。 这是我期望看到的结果: { "aaData": [['Tim Osbourne'],['Joe Bloggs'],['John Doe'],['Perry Coke'],['Will Holmes'],['Steven Smith']} 但是我得到这个结果: { "aaData": [[],[],[],[],[],[],]}'Tim Osbourne','Joe Bloggs','John Doe','Perry Coke','Will Holmes','Steven Smith', 这是我的代码: app = require('../ app'); var redis = require(“redis”), client = redis.createClient(); routes = require('./'); var key_types =''; client.keys(“*”,函数(err,all_keys){ key_types + ='{“aaData”:['; all_keys.forEach(function(key,pos){//使用forEach的第二个参数来获取pos key_types + =“[”; client.hmget([key,'空间的所有者]],函数(err,field_val){ key_types = key_types +“'”+ field_val +“',”; }); […]

如何导入需要参数的模块

这是我的文件结构: -models -user.js -room.js -database.js -controllers -createRoom.js -routes.js .. user.js和room.js是我想要在database.js中导入的模块。 现在我正在做这样的事情: 在database.js中: var mysql = require('mysql'); var Sequelize = require('sequelize'); var db = new Sequelize('test', 'root', 'root', { dialect: "mysql", port: 3306 }) var User = require('./user.js')(Sequelize, db); var Room = require('./room.js')(Sequelize, db); module.exports = function(){ //code… }; 在user.js / room.js中 module.exports = function (Sequelize, […]