编码NodeJS时,Java过滤器的等价物是什么?

时间:2014-08-17 05:02:51

标签: node.js

对于我们正在开发的NodeJS应用程序,我想处理cookie并检查每个请求的用户角色。我在编写Tomcat Servlets时使用过滤器实现了这个,在编写NodeJS时如何实现类似的架构?

2 个答案:

答案 0 :(得分:2)

假设您使用express,快速中间件类似于过滤器:

http://expressjs.com/api.html#middleware

但是,如果你正在寻找专门的auth,Passport是一个更完整的解决方案: http://passportjs.org/guide/

答案 1 :(得分:2)

Servlet过滤器的节点等价物是Connect / Express中间件,它们可以访问请求和响应对象,可以在响应上设置标头,并决定是否将请求转发到中间件链中的下一个中间件。

正如使用3个参数调用doFilter方法一样,也会使用3个参数调用中间件,但不是调用filterChain.doFilter来转发请求,而是调用next回调。不调用next回调的结果与不调用filterChain.doFilter()的结果相同:除非响应为end,否则它们都会阻止请求。

public void doFilter(ServletRequest request, ServletResponse response, 
                     FilterChain chain) {
   if(isAuthorised(request) chain.doFilter(request, response);
}

function aMiddleware (req, res, next/*filterChain*/) {
  if(isAuthorised(req)) next();
}