Javascript 护照持有人或已认证
我一直在寻找,看看这是否是可能的一段时间,但没有找到任何东西 基本上,我用它来处理用户身份验证。当然,使用Node.js和Express来处理服务器端的事情。我还使用允许OAuth和处理API调用 对于API调用,我使用中间件Javascript 护照持有人或已认证,javascript,node.js,authentication,express,passport.js,Javascript,Node.js,Authentication,Express,Passport.js,我一直在寻找,看看这是否是可能的一段时间,但没有找到任何东西 基本上,我用它来处理用户身份验证。当然,使用Node.js和Express来处理服务器端的事情。我还使用允许OAuth和处理API调用 对于API调用,我使用中间件controllerClient.isBearerAuthenticated,它运行passport.authenticate('bearer',{session:false})。然后,它将启动并运行passport内的函数。使用(“bearer”,新BearerStrat
controllerClient.isBearerAuthenticated
,它运行passport.authenticate('bearer',{session:false})
。然后,它将启动并运行passport内的函数。使用(“bearer”,新BearerStrategy)
。基本上是检查令牌是否有效并调用回调函数
对于非API请求和普通网页,它运行以下中间件来检查身份验证
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect('/');
}
这就是我的问题。如果存在承载令牌或req.isAuthenticated()
=true,我希望允许访问我的API调用。目前,我必须选择是使用isLoggedIn
中间件还是controllerClient.isBearerAuthenticated
中间件。我正试图找到一种方法把它们结合在一起,像是一个或语句之类的
我在考虑使用多个中间件函数,以便它调用isLoggedIn
,然后调用controllerClient.isBearerAuthenticated
。但问题似乎是回调函数会被调用,所以它们都会被调用。我也在研究是否有一种方法可以跳过下一个中间件函数,转到下一个,但我也找不到任何相关的方法
我认为最好的办法是找到一种跳过controllerClient.IsBeareAuthenticated的方法,如果req.isAuthenticated()
=true。现在可能有更好的方法来做到这一点,如果是这样的话,我很乐意听到它
但是关于如何使用中间件检查用户是否通过req.isAuthenticated()
或
进行身份验证,有什么建议吗?或者实现这一目标的最佳方式是什么
还有一个问题。我之前问过一个问题,我发现passport.authenticate
是用来处理实际问题的
身份验证不是已通过身份验证的用户。
否则,我将只使用passport.authenticate
和
护照战略。而且使用会有和我现在使用连接确保登录或controllerClient.isBearerAuthenticated
相同的问题
非常感谢提前这么多 我找到了一个似乎有效的解决方案。为了将来的参考和有类似问题的人,我将在下面发布我的解决方案 基本上,使用以下代码实现一个中间件功能似乎是可行的
function isAuthenticated(req, res, next) {
//Checking to see if user is authenticated on the web
if (req.isAuthenticated()) {
return next();
}
//If not checking to see if user is authenticated via Bearer and OAuth
else {
return controllerClient.isBearerAuthenticated.apply(this, arguments);
}
}
所以我们只是检查req.isAuthenticated
是否等于true。如果是,我们只是返回回调函数,API函数将被调用。如果没有,那么我们将检查controllerClient.isBearerAuthenticated
,它将自动调用下一个函数,如果成功,它看起来会这样。如果没有,它将发送状态代码为401的未经授权
很高兴能弄清楚如何准确地更改
未经授权的消息,但希望以后能对此进行研究。我找到了一个似乎有效的解决方案。为了将来的参考和有类似问题的人,我将在下面发布我的解决方案
基本上,使用以下代码实现一个中间件功能似乎是可行的
function isAuthenticated(req, res, next) {
//Checking to see if user is authenticated on the web
if (req.isAuthenticated()) {
return next();
}
//If not checking to see if user is authenticated via Bearer and OAuth
else {
return controllerClient.isBearerAuthenticated.apply(this, arguments);
}
}
所以我们只是检查req.isAuthenticated
是否等于true。如果是,我们只是返回回调函数,API函数将被调用。如果没有,那么我们将检查controllerClient.isBearerAuthenticated
,它将自动调用下一个函数,如果成功,它看起来会这样。如果没有,它将发送状态代码为401的未经授权
想知道如何准确地更改未经授权的
消息会很好,但希望以后会对此进行研究