【发布时间】:2018-06-18 14:47:14
【问题描述】:
在处理路由时,我想检查路由是否有效。如果没有,我总是想重定向到notFound 页面。
如果用户未获得授权,我总是希望重定向到login 页面。
否则我想使用有效的路线。
在我的app.js 中,我需要我的router.js 并作为参数传入应用程序
require('./server/router')(app);
所以我的路由器在拥有时工作正常
module.exports = function(app){
app.use('/route1', require('./routes/route1'));
app.use('/route2', require('./routes/route2'));
app.use('/route3', require('./routes/route3'));
};
在那里。使用这种结构时
module.exports = function(){
var router = require('express').Router();
router.use('/route1', require('./routes/route1'));
};
结果
Cannot GET /route1
我所有的路线都包含这个基础结构
var router = require('express').Router();
// -- Route --
router.get('/', function (req, res) { // Render the HTML here
res.render('route1', {
});
});
// -- Ajax POST --
router.post('/doSomething', function (req, res) { // Load some data
res.send({});
});
module.exports = router;
在需要路由的时候不能用路由器吗?
我还想实现对无效路由或授权用户的检查。
app.use(function(req, res, next) {
if(!req.route){
res.redirect('/notFound'); // invalid route
} else {
var session = req.session;
if (session.user == null){ // unauthorized user
res.redirect('/login');
} else {
// valid routes here
}
}
});
如何将此伪代码与我的有效路线联系起来?
【问题讨论】:
-
您是否为您的应用使用了通用错误处理程序?
-
抱歉什么意思?
-
express如果出现问题会自动抛出错误。通常你会在app.js中放置一个错误处理程序来生成错误消息和状态。但是,404错误是不同的情况,需要单独处理。如果你愿意,我可以给你举个例子。 -
那会很好,是的:)
-
@YouneL 的回答应该有效
标签: javascript node.js express routing