Учитывая два промежуточного слоя, как вы можете добавить что-то, что попало бы первым, а затем определить, какое из промежуточного программного обеспечения передать запрос. Запрос можно отбрасывать или перенаправлять только на одно из промежуточного программного обеспечения, но не на обоих.Как пропустить или перейти к промежуточному программному обеспечению? (node)
app.use(function *(next) {
if (isAuthenticated)
*private middleware*
else
*use public middleware*
});
Более конкретно:
У меня есть сайт /
, который должен иметь переменную реакцию в зависимости от того, если пользователь вошел в систему или нет (с помощью маркера на основе AUTH здесь). Для простоты, если пользователь запроса не имеет токена, то 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();
});
Просто используйте один специальный обработчик промежуточного программного обеспечения, который проверяет условия и сам решает, какую другую функцию вызывать. – jfriend00
@ jfriend00 Извините, я не понимаю, что вы подразумеваете под «какой другой функцией назвать»? – House3272
Вместо того, чтобы полагаться на цепочку промежуточного программного обеспечения, функции вызова, которые вы определили, при необходимости, при необходимости, «req» и «res». –