给定两个中间件,你怎么能先添加一些会被命中的东西,然后确定将请求传递到哪个中间件。该请求只能被丢弃或转发到其中一个中间件,而不能同时发送。
app.use( function *(next) {
if (isAuthenticated)
*private middleware*
else
*use public middleware*
});
更具体地说:
我有一个主页/
,它应该有一个可变的响应,具体取决于用户是否登录(在此处使用基于令牌的身份验证)。为简单起见,如果请求用户没有令牌,则public.html
响应private.html
带有有效令牌的请求。
现在这很容易在一个函数中实现,但我希望有分离的路由器,这样可以使代码更易于管理。
所以我需要以某种方式能够选择请求发送到哪个中间件路由器?不知道该怎么做。
var publicR = new router();
publicR.get('/', function *(next) {
....public.html....
});
var privateR = new router();
privateR.get('/', function *(next) {
....private.html....
});
app.use(function(){
if(isAuthenticated)
...use privateR.routes();
else
...use publicR.routes();
});