Фильтры на express.js - PullRequest
       3

Фильтры на express.js

12 голосов
/ 06 января 2012

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

Спасибо

Ответы [ 3 ]

15 голосов
/ 30 ноября 2012

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

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 - функции.

Ознакомьтесь с документацией для app.VERB и app.all по адресу http://expressjs.com/api.html#app.all

3 голосов
/ 13 января 2012

Концепция rails before_filter тесно связана с концепцией промежуточного программного обеспечения от 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.

3 голосов
/ 06 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...