我正在编写一个基于Express.js的应用程序,同时使用Everyauth进行身份验证。
要初始化所有内容,我使用:
app.use(everyauth.middleware());
对于某些路由,我想绕过身份验证。具体来说,我注意到每个请求都调用了findUserById,我想跳过某些路由(例如,不对/getImage进行身份验证)。
这有可能吗?
发布于 2012-02-13 19:38:04
您可以手动包装everyauth.middleware()
回调。
var auth = everyauth.middleware();
app.use(function(req, res, next) {
if (shouldAuthRequest(req)) {
// call auth, as if it was part of the route
auth(req, res, next);
} else {
// ignore auth
next();
}
});
这只不过是一个包装好的中间件。
发布于 2013-10-06 10:04:52
从0.4.5开始,必须使用Express的everyauth.middleware
对象调用app
。因此,您可以以这种方式创建包装的中间件:
var my_auth_middleware = function(app) {
var auth = everyauth.middleware(app);
// a custom middleware wrapping everyauth
var middleware = function(req, res, next) {
if (shouldAuthRequest(req)) {
// go through the everyauth middleware
auth(req, res, next);
} else {
// bypass everyauth
next();
}
};
// these allow the middleware to be "mounted" by Express
middleware.set = true;
middleware.handle = middleware;
middleware.emit = auth.emit;
// return our custom middleware
return middleware;
};
,然后将包装好的中间件添加到堆栈中。
app.use(my_auth_middleware(app));
https://stackoverflow.com/questions/9266591
复制相似问题