当前位置: 首页 > 知识库问答 >
问题:

表达中间件受保护和不受保护的路由

刁英朗
2023-03-14

在< code>/users下,我有一些需要身份验证令牌的路由,还有一些不需要。为了实现这一点,我做了以下工作。

var protected = express.Router();
var unprotected = express.Router();

unprotected.post('/', function(req, res, next) { // A
   // no auth required
   next();
});

protected.get('/', function(req, res, next) { // B
   // auth required
   next();
});

module.exports = {
    protected: protected,
    unprotected: unprotected
};

然后我按照以下方式安装这些路线。

var users = require('./routes/users');

app.use('/users', unprotected_middleware, users.unprotected); // C
app.use('/users', protected_middleware, users.protected); // D

app.use(resultHandler); // Middleware for sending the response (all routes) 
app.use(errorHandler);  // Middleware for handling errors (all routes)

当我向< code>/users发送POST时,它运行预期的路径,但是当< code>next()被调用时,< code > protected _ middleware 运行。这是因为它在标有“D”的行中找到了下一个< code>/users定义。

解决这个问题的推荐方法是什么?

对于每个资源,我希望每个路由都有不同的中间件。

POST /users           (no auth)
GET /users            (requires auth)
DELETE /users/{id}    (requires auth and admin access)

共有1个答案

劳彦
2023-03-14

这里不需要两个独立的路由器,只需在需要的地方使用受保护和不受保护的中间件(在路由器get/post函数中):

用户.js:

var router = express.Router();

router.post('/', unprotected_middleware, 
   function(req, res, next) { // A
     // no auth required
     next();
  }
);

router.get('/', protected_middleware, 
    function(req, res, next) { // B
      // auth required
      next();
    }
);
module.exports = router;

然后:

var users = require('./routes/users');

app.use('/users', users);

app.use(resultHandler); // Middleware for sending the response (all routes) 
app.use(errorHandler); 
 类似资料:
  • 6xx受保护 600 Series,Repliesregardingconfidentialityandintegrity 631 Integrityprotectedreply. 632 Confidentialityandintegrityprotectedreply. 633 Confidentialityprotectedreply.

  • 问题内容: 为什么定义中的所有方法都是隐式的?为什么不允许使用方法? 问题答案: 因为接口应该表示“您可以在课堂外看到的东西”。添加非公共方法是没有意义的。

  • 问题内容: 如何在受保护的python类中定义一个方法,只有子类才能看到它? 这是我的代码: 我只希望看到的方法的子类。 问题答案: Python不像C ++ / Java / C#支持访问保护。一切都是公开的。座右铭是:“我们都是成年人。” 记录下您的课程,并坚持要求您的合作者阅读并遵守文档。 Python的文化是,以下划线开头的名称意味着:“除非您真正知道应该使用这些名称,否则请不要使用它们。

  • 我正在尝试使用SAML保护资源。有三个参与者在起作用:身份提供者(IDP,在我的控制范围之外)、服务提供者(SP,我碰巧在使用spring security saml,但这个问题并不特定于此),以及受保护的资源(PR,SP之外服务中的某个受保护endpoint)。 我需要支持两种场景: 用户第一次尝试访问PR,没有任何会话 对于场景1应该如何工作,有足够的指导,因为根据我所看到的,这是使用SAML

  • 问题内容: 关键字授予对相同包和子类(http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html)中的类的访问权限。 现在,每个类都有一个超类(http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html)。 因此,我得出结论,即使每个类都可以访问的方法。

  • 问题内容: 我有一个受密码保护的Excel电子表格。我需要打开此电子表格并从中读取数据。我一直在尝试使用POI API无济于事。首选Java解决方案,但任何想法都会有所帮助。 编辑:是的,我有密码。该文件在excel中受密码保护;必须输入密码才能查看电子表格。 Edit2:我无法使用带有密码的POI打开它,我在寻找替代解决方案。 问题答案: 您可以使用JExcelApi。 自从我这样做已经有一段时