具有Express的Node.js - 阻止访问某些URL

时间:2014-11-14 06:57:48

标签: node.js express passport.js

如果我有一个id = 555的网络应用程序的用户,我如何只允许他访问以下网址:

www.example.com/users/555/home

并阻止他进入

www.example.com/users/554/home

等?

最好的方法是什么?我目前正在使用Passport.js进行身份验证。

2 个答案:

答案 0 :(得分:2)

在Express 4中,use()可以采用路径。因此,非常松散(并且可能有错误)将此放在您的应用程序之前,get(),app.put()等......

app.use('/users/:id/:dir', function(req, res, next){
  if (checkAuth(lots of args)). // you have an id, dir, etc...
     next();  // user is o.k. to proceed
  else
     send a 400 or whatever;  and don't call next!
});

与JimmyRare的答案不同,这涵盖了所有HTTP动词和所有用户。

已添加:我对passport.js不熟悉,因此该部分需要由其他人填写。护照专家,请随时编辑此答案。

答案 1 :(得分:1)

app.get('/users/:id/home', function(req, res) {
  if(req.params.id == 554) {
    res.send('Thy art not allowed!');
  }
};