Фильтры на экспресс.JS
Я хочу сделать фильтр, как рельсы перед фильтром на express.JS.
У меня есть файл с именем фото.js, где я размещаю все свои фото связанные маршруты там. Но мне нужно перенаправить пользователя, который не прошел проверку подлинности в моей системе, на страницу входа. Я хочу сделать фильтр beforeFilter, так что мне не нужно вводить эту логику во все мои маршруты...
Спасибо
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