我使用passport.js进行身份验证。我的要求是,如果没有登录,任何人都不应该访问特定页面(例如'/ restricted')。
目前,在我的应用程序中,任何人都可以直接访问“localhost:3000 /#/ restricted”网址。
我可以停止此操作,只允许登录用户使用Rorschach120的解决方案访问该页面 Redirect on all routes to login if not authenticated
但这是在客户端完成的,并不安全,因为任何人都可以从浏览器访问此代码。
所以我需要将我的页面请求转到服务器,我在moka中尝试了How to know if user is logged in with passport.js?的解决方案:
在 app.js :
app.get('/restricted', loggedIn, function(req, res, next) {
// req.user - will exist
// load user orders and render them
});
其中loggedIn()函数检查用户是否已登录。
但是这个中间件被从不调用,任何人仍然可以访问“受限制”页面。 我该怎么做才能调用它?
我是AngularJS和NodeJS的新手。我在这里做错了吗? 任何帮助将不胜感激。
答案 0 :(得分:0)
您可以将中间件用于此目的。
app.get('/secure-route', secureMiddleware, myMethod)
let secureMiddleware = function(req, res, next) {
authCheck(...)
.then(function(result) {
// pass
next()
})
.catch(function(err) {
res.status(401).json({
code: 401,
message: 'restricted route'
})
})
}