CNode

请教一个在Express中,对路由利用中间件进行权限控制的问题

Kkg8gk发布于13 年前最后回复13 年前3 回复5807 浏览0 收藏

怎样利用中间件函数对每一个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)

Y
yybcjq#1·13 年前

可以试试这样写:app.get('/path', authChecker, doSomethingFunc); authChecker就是你自个写的那个函数

F
fanpei#2·13 年前

app.get('/auth', xxx); app.all('*', xxx); //不能放在做auth的前面. app.get('/one', xxx); app.get('/two', xxx); app.post('/three', xxx);

参与回复
登录后即可参与回复。登录