如果我有一个id = 555的网络应用程序的用户,我如何只允许他访问以下网址:
www.example.com/users/555/home
并阻止他进入
www.example.com/users/554/home
等?
最好的方法是什么?我目前正在使用Passport.js进行身份验证。
答案 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!');
}
};