首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Express.js:在某些路线上如何绕过Everyauth?

Express.js:在某些路线上如何绕过Everyauth?
EN

Stack Overflow用户
提问于 2012-02-13 19:22:45
回答 2查看 2.4K关注 0票数 4

我正在编写一个基于Express.js的应用程序,同时使用Everyauth进行身份验证。

要初始化所有内容,我使用:

代码语言:javascript
运行
复制
app.use(everyauth.middleware());

对于某些路由,我想绕过身份验证。具体来说,我注意到每个请求都调用了findUserById,我想跳过某些路由(例如,不对/getImage进行身份验证)。

这有可能吗?

EN

回答 2

Stack Overflow用户

发布于 2012-02-13 19:38:04

您可以手动包装everyauth.middleware()回调。

代码语言:javascript
运行
复制
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();
  }
});

这只不过是一个包装好的中间件。

票数 3
EN

Stack Overflow用户

发布于 2013-10-06 10:04:52

从0.4.5开始,必须使用Express的everyauth.middleware对象调用app。因此,您可以以这种方式创建包装的中间件:

代码语言:javascript
运行
复制
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;
};

,然后将包装好的中间件添加到堆栈中。

代码语言:javascript
运行
复制
app.use(my_auth_middleware(app));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9266591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档