请教一个在Express中,对路由利用中间件进行权限控制的问题
怎样利用中间件函数对每一个get,put等路由进行权限控制判断,就像Java里Struts2的可以利用过滤器对每个请求进行权限判断。
试过在路由前加中间件函数
function authChecker(req, res, next) {
if (req.session.auth) {
next();
} else {
res.redirect("/auth");
}
}
app.use(authChecker);
app.get("/", routes.index);
app.get("/foo/bar", routes.foobar);
上面的代码可以将所有没有指定路由的请求转发的"/auth"上,但是下面两个指定了的get,是进入不了中间件函数的。
在网上查过,有像这样在每个get函数中加上中间件的方法 ,但是指定的路由多了,这样就很麻烦
请问各位有没有一种好的简洁的方式,可以指定一个权限检查函数,对特定的请求之外的所有请求进行权限检查?
2 回复
可以试试这样写:app.get(’/path’, authChecker, doSomethingFunc); authChecker就是你自个写的那个函数
app.get(’/auth’, xxx); app.all(’*’, xxx); //不能放在做auth的前面. app.get(’/one’, xxx); app.get(’/two’, xxx); app.post(’/three’, xxx);