对于我们正在开发的NodeJS应用程序,我想处理cookie并检查每个请求的用户角色。我在编写Tomcat Servlets时使用过滤器实现了这个,在编写NodeJS时如何实现类似的架构?
答案 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();
}