繁体   English   中英

在express.js上过滤

[英]Filters on express.js

我希望在express.js上过滤之前做一个类似rails的过滤器。 我有一个名为photo.js的文件,我将所有与照片相关的路线放在那里。 但我需要将未在我的系统上进行身份验证的用户重定向到登录页面。 我想做一个beforeFilter,所以我不需要把这个逻辑放在我的所有路线中......

谢谢

如果你想保留你的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');
});

其中requireAuthenticationloadUser是函数。

http://expressjs.com/api.html#app.all上查看app.VERB和app.all的文档

快递或更高级别的框架,如快递资源

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一样用于editPhotodeletePhoto中间件函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM