我正在使用快递模块。
对于每条路线,我都会输入此代码(登录/注册页面除外)
if (req.session.user!='admin')
{
res.redirect('/');
return ;
}
有没有办法告诉快递自动调用此会话检查,除了一个特定的路由(登录页面)? 因为这给了我冗余的代码,并且有可能忘记对新路由进行检查......
答案 0 :(得分:0)
你有几种方法:
app.use
条件(if(req.url === 'login/sign-up') ...
)<强>更新强>
来自http://expressjs.com/en/guide/routing.html
var express = require('express');
var router = express.Router();
// middleware that is specific to this router
router.use(function timeLog(req, res, next) {
console.log('Time: ', Date.now());
next();
});
// define the home page route
router.get('/', function(req, res) {
res.send('Birds home page');
});
// define the about route
router.get('/about', function(req, res) {
res.send('About birds');
});
module.exports = router;
然后只需致电app.use(router)
。 Bescides,使用路由器是一个好主意,因为它允许按照它们的意思对路由进行分组,并像它一样使用它模块
答案 1 :(得分:0)
route.get('/somelink',function(res,res,next){
if (req.session.user!='admin')
{
res.redirect('/');
}else{
next();
}
},function(req,res){
res.render('page');
});
可以做你的事情,为某条路线做一个例子:
route.get('/somelink',check,function(req,res){
res.render('page');
});
function check(req,res,next){
if (req.session.user!='admin')
{
res.redirect('/');
}else{
next();
}
注意您甚至可以将回调函数分开以允许可重用性:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt",
"Effect": "Deny",
"Action": [
"kms:Decrypt"
],
"Resource": [
"*"
]
},
{
"Sid": "Stmt",
"Effect": "Allow",
"Action": "kms:Encrypt",
"Resource": [
"arn:aws:kms:us-east-1:11111111:key/bla-bla"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"12.12.12.12",
]
}
}
}
]
}
答案 2 :(得分:0)
使用middleware:
// server.js
const app = expres();
app.use('/path', require('./middleware.js'));
然后在需要时使用它:
data[!apply(data == "", 1, all),]