Tag: 表示

赶上expressParser错误

我想从bodyParser()中间件发送错误,当我发送一个JSON对象,它是无效的,因为我想发送一个自定义的响应,而不是一个通用的400错误。 这是我有,它的工作原理: app.use (express.bodyParser ()); app.use (function (error, req, res, next){ //Catch bodyParser error if (error.message === "invalid json"){ sendError (res, myCustomErrorMessage); }else{ next (); } }); 但是这在我看来是一个非常丑陋的方法,因为我正在比较可能在将来的快速版本中改变的错误消息。 还有其他方法可以捕获bodyParser()错误? 编辑: 这是请求主体有一个无效的json时的错误: { stack: 'Error: invalid json\n at Object.exports.error (<path>/node_modules/express/node_modules/connect/lib/utils.js:55:13)\n at IncomingMessage.<anonymous> (<path>/node_modules/express/node_modules/connect/lib/middleware/json.js:74:71)\n at IncomingMessage.EventEmitter.emit (events.js:92:17)\n at _stream_readable.js:872:14\n at process._tickDomainCallback (node.js:459:13)', arguments: undefined, type: undefined, message: […]

如何在JWT中使用jti声明

JWT规范提到了一个jti声明,据称这个声明可以作为随机数来防止重播攻击: JTI(JWT ID)声明为JWT提供了一个唯一的标识符。 标识符值必须以确保相同值被偶然分配给不同数据对象的可能性可以忽略的方式分配; 如果应用程序使用多个发行者,则必须防止不同发行者产生的值之间的冲突。 jti声明可用于防止重播JWT。 jti值是区分大小写的string。 使用这个声明是可选的。 我的问题是如何去执行这个? 我是否需要存储以前使用的jtis,并在每次请求时发布新的JWT? 如果是这样,这是否不符合智威汤逊的目的? 为什么使用JWT而不是将随机生成的会话ID存储在数据库中? 我的REST API有一个mongo数据库,我不反对增加一个redis实例。 有比JWT更好的身份validation选项吗? 我主要是不想在客户端存储消除HTTPauthentication的密码作为一个选项,但是,当我深入到这个JWT的东西,我开始感觉,如果自定义令牌实施或不同的标准可能会更好满足我的需求。 是否有任何节点/快递包基于令牌的authentication,支持令牌吊销和旋转令牌? 将不胜感激任何意见。

Node / Express.js – 重写查找每个请求的“视图”文件夹的位置

在我的Node / Express.js项目中,我可以像这样全局设置视图文件夹: app.configure(function() { app.set('views', __dirname + '/views'); …. snip …. }); …和我所有的视图模板进入视图文件夹。 是否有可能重写快速查找请求的请求的意见? 比如,像下面这样的东西: app.get('/', function(req, res) { res.render('index', { viewFolder: 'otherViews' }); }); 我问的原因是我试图复制Microsoft ASP.NET MVC的地区function,其中每个区域获取它自己的视图文件夹。

Node.jsexpression正确使用bodyParser中间件

我是node.js的新手,expression了一段时间的尝试。 现在我对与parsing请求体相关的expression框架的devise感到困惑。 从快递的官方指南: app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(logErrors); app.use(clientErrorHandler); app.use(errorHandler); 设置所有中间件之后,我们添加我们要处理的路线: app.post('/test', function(req, res){ //do something with req.body }); 这种方法的问题是,在检查路由有效性之前,所有的请求主体将被首先parsing。 分析无效请求的机构似乎效率很低。 甚至更多,如果我们启用上传处理: app.use(express.bodyParser({uploadDir: '/temp_dir'})); 任何客户端可以通过上传任何文件(通过发送请求到ANY路由/path!!)来轰击服务器,所有这些都将被处理并保存在“/ temp_dir”中。 我不敢相信这个默认方法正在被广泛推广! 我们当然可以在定义路由时使用bodyParser函数: app.post('/test1', bodyParser, routeHandler1); app.post('/test2', bodyParser, routeHandler2); 甚至可能在处理路由的每个函数中parsing主体。 但是,这是很乏味的事情。 有没有更好的方法使用express.bodyParser只有在所有有效的(定义的)路由,并使用file upload处理能力只在选定的路由,没有很多的代码重复?

我怎样才能让Express.js到404只在缺less路线?

目前我有以下所有我的其他路线: app.get('*', function(req, res){ console.log('404ing'); res.render('404'); }); 而且根据日志,即使路线与上面相匹配,也会被解雇。 我怎样才能让它只有在什么都没有匹配的时候才会被触发?

护照的req.isAuthenticated总是返回false,即使我硬编码完成(null,true)

我试图让我的护照本地策略工作。 我有这个中间件设置: passport.use(new LocalStrategy(function(username, password, done) { //return done(null, user); if (username=='ben' && password=='benny'){ console.log("Password correct"); return done(null, true); } else return done(null, false, {message: "Incorrect Login"}); })); 但在这里 app.use('/admin', adminIsLoggedIn, admin); function adminIsLoggedIn(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); // if they aren't […]

服务器端渲染与反应,反应路由器,并表示

我试图为我的反应应用程序设置服务器端渲染,我试图使用伟大的react-router模块来允许它处理非js的情况(一些爬虫,当用户closuresjs原因)。 但是,我遇到了麻烦。 我一直在使用伟大的响应在这里https://stackoverflow.com/a/28558545/3314701作为指导,但我得到了奇怪的错误抛给我。 尝试使用react.renderToString()时,我得到一个持久的Syntax Error 。 我是否设置了错误的服务器端渲染,丢失了明显的东西,还是其他的东西? 我的设置: 真正基本的快递服务器 require('babel/register'); var app = express(); // misc. express config… var Router = require('react-router'), routes = require('../jsx/app').routes, React = require('react'); app.use(function(req, res, next) { var router = Router.create({location: req.url, routes: routes}); router.run(function(Handler, state) { console.log(Handler); var html = React.renderToString(<Handler/>); return res.render('react_page', {html: html}); }); }); 顶级反应<App/>组件 // […]

在Node.js中设置一个cookie值

我正在用node.js开发一个网站并进行expression。 我怎样才能设置一个cookie值?

你如何链接到一个玉文件的CSS?

我目前正试图链接normalize.css但它不工作(使用套接字expression) html head title= "Real time web chat" link(href='/css/normalize.css') script(src='/chat.js') script(src='/socket.io/socket.io.js') script(src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js') body #content(style='width: 100%; height: 600px; margin: 0 0 20px 0; border: solid 1px #999; overflow-y: scroll;') .controls | Name: input#name(style='width:350px;') input#field(style='width:350px; display: inline; margin-left -90px;') input#send(type='button', value='send')

如何在Express中强制parsing请求主体而不是json?

我正在使用nodejs + Express(v3)像这样: app.use(express.bodyParser()); app.route('/some/route', function(req, res) { var text = req.body; // I expect text to be a string but it is a JSON }); 我检查了请求标题和内容types丢失。 即使“内容types”是“文本/纯文本”它似乎parsing为JSON。 有反正告诉中间件总是parsing为纯文本string而不是json的身体? 早期版本的req曾经有req.rawBody ,可以解决这个问题,但现在已经req.rawBody了。 在Express中强制parsing主体为纯文本/string的最简单方法是什么?