在处理路由时,我想检查路由是否有效。如果没有,我总是想重定向到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
}
}
});如何将这个伪代码与我的有效路由连接?
发布于 2018-01-09 14:34:36
把你的特快app.js放在末尾
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
if(err.status == 404) res.redirect('/notFound')
// can handle more conditions (like 500) also
})发布于 2018-01-09 15:26:59
您必须创建一个中间件,用于在所有路由之上检查授权用户,并创建另一个中间件来处理最终未找到的路由:
处理未经授权的用户:
app.use(function(req, res, next) {
if (!req.session.user) {
return res.redirect('/login');
}
next();
});渔获物未找到的路线:
app.use(function(req, res, next) {
res.status(404).send('Page Not Found');
});您可能希望使用res.render('error', {code: 404, msg: 'Page Not Found'});呈现错误视图。
https://stackoverflow.com/questions/48170358
复制相似问题