V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coolicer
V2EX  ›  Node.js

我一直不明白中间件验证,谁来解析一下。

  •  
  •   coolicer · 2013-10-10 09:12:25 +08:00 · 3099 次点击
    这是一个创建于 4087 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在研究nodeclub的源码,有一个函数是这样的:

    exports.auth_user = function (req, res, next) {
    ...
    //登录时候会产生一个cookie,这里貌似会在登录完后读取那个cookie。
    }

    然后在app.js里面有一句这样的:

    app.use(require('./controllers/sign').auth_user);

    我比较在意这个方法是什么时候执行的,是不是每次请求都会执行一次?

    本人菜鸟
    7 条回复    1970-01-01 08:00:00 +08:00
    mengzhuo
        1
    mengzhuo  
       2013-10-10 09:20:00 +08:00   ❤️ 1
    虽然没写过nodejs,但是和Python各个框架的中间件概念应该是相同的
    https://docs.djangoproject.com/en/1.2/_images/middleware.png
    一图胜千言
    coolicer
        2
    coolicer  
    OP
       2013-10-10 09:36:01 +08:00
    @mengzhuo 有点晕~ :)
    ijse
        3
    ijse  
       2013-10-10 09:44:28 +08:00
    你在auth_user这个middleware中打下log试下, 是每次请求都会执行的, 一般把它放在所有routes之前注册。
    ijse
        4
    ijse  
       2013-10-10 09:45:28 +08:00
    PS, express的route设计很赞的,AOP思想
    lidashuang
        5
    lidashuang  
       2013-10-10 10:43:41 +08:00
    每次请求都会执行一次
    roricon
        6
    roricon  
       2013-10-10 11:05:25 +08:00
    中间件嘛。当然是作为中间人存在的。存在的目的就是不判断业务逻辑,而是进行“处理-转发”的动作。如果在中间件里面再判断是否要每次都执行某个动作,那就失去中间件的意义了嘛……
    coolicer
        7
    coolicer  
    OP
       2013-10-10 11:25:06 +08:00
    谢谢你们的回答
    @ijse
    @lidashuang
    @roricon
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2312 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:09 · PVG 00:09 · LAX 08:09 · JFK 11:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.