Фильтры на экспресс.JS



Я хочу сделать фильтр, как рельсы перед фильтром на express.JS.
У меня есть файл с именем фото.js, где я размещаю все свои фото связанные маршруты там. Но мне нужно перенаправить пользователя, который не прошел проверку подлинности в моей системе, на страницу входа. Я хочу сделать фильтр beforeFilter, так что мне не нужно вводить эту логику во все мои маршруты...



Спасибо

675   3  

3 ответов:

Если вы хотите сохранить все на своей фотографии.js file, я думаю, что лучший подход-это использовать приложение.все и передать несколько обратных вызовов (которые работают как middleware в маршрутизации), встроенные в приложение маршрутизации. Например

app.all('/photo/*', requireAuthentication, loadUser);

app.get('/photo/view', function(req, res) {
   res.render('photo_view');
});

app.get('/photo/list', function(req, res) {
   res.render('photo_list');
});

, где requireAuthentication и loadUser - функции.

Посмотрите документацию для приложения.Глагол и приложение.все на http://expressjs.com/api.html#app.all

Существуют расширения или фреймворки более высокого уровня, такие как express-resource.

Концепция rails before_filter тесно связана с концепцией middleware из connect, которая является частью express. Вы можете настроить это вручную, предваряя каждый маршрут, связанный с фотографией, функцией аутентификации, или использовать что-то на высоком уровне, как упоминал TJ. Сделать это вручную было бы просто вопросом чего-то вроде этого (псевдо-coffeescript)

myAuthMiddleware = (req, res, next) ->
  if not req.session.user?
    res.redirect "/"
  else
    next()

editPhoto = (req, res) ->
  ....

deletePhoto = (req, res) ->
  ....

app.use(myAuthMiddleware, func) for func in [editPhoto, deletePhoto]

Это означает использование myAuthMiddleware Как before_filter для функций editPhoto и deletePhoto промежуточного программного обеспечения.

Comments

    Ничего не найдено.