请教一个在Express中,对路由利用中间件进行权限控制的问题
发布于 1年前 作者 kg8gk 885 次浏览

怎样利用中间件函数对每一个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函数中加上中间件的方法 ,但是指定的路由多了,这样就很麻烦

请问各位有没有一种好的简洁的方式,可以指定一个权限检查函数,对特定的请求之外的所有请求进行权限检查?

3 回复

可以试试这样写: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);

赞同一楼的写法

回到顶部