nodeJS中的页面请求的服务器身份验证,angularJS应用程序

时间:2015-11-30 09:50:04

标签: javascript angularjs node.js routing passport.js

我使用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的新手。我在这里做错了吗? 任何帮助将不胜感激。

1 个答案:

答案 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'
            })
        })
}