Node.js 如何在同一端点上使用passport js本地和基本策略?

Node.js 如何在同一端点上使用passport js本地和基本策略?,node.js,mean-stack,passport.js,Node.js,Mean Stack,Passport.js,我正在使用一个基于Yeoman生成器的平均堆栈,并试图对我的api端点进行密码保护 我希望能够在同一个端点上使用本地和基本策略,以便可以从外部源调用API并在我的webapp中使用它 然而,当我实现这一点时,我一次只能使用一种策略,因为基本身份验证是“无状态”的,这意味着它不附加会话 到目前为止,我用这段代码得到了两个不同的端点,采用了两种不同的策略: router.get('/all-basic', passport.authenticate(['local','basic'],{ sessi

我正在使用一个基于Yeoman生成器的平均堆栈,并试图对我的api端点进行密码保护

我希望能够在同一个端点上使用本地和基本策略,以便可以从外部源调用API并在我的webapp中使用它

然而,当我实现这一点时,我一次只能使用一种策略,因为基本身份验证是“无状态”的,这意味着它不附加会话

到目前为止,我用这段代码得到了两个不同的端点,采用了两种不同的策略:

router.get('/all-basic', passport.authenticate(['local','basic'],{ session: false }), controller.index);
router.get('/all local',auth.isAuthenticated(),controller.index)

我想知道是否有其他方法或最佳实践尝试在同一个端点上使用两种策略,或者我只需要调用两个不同的端点

谢谢!
安德烈斯·奥索里奥

经过几次尝试,我找到了解决办法

我使用了第二个端点:

router.get('/all-local', auth.isAuthenticated(), controller.index);
我用邮递员提出了两个要求:

一个用于登录尝试(如果您使用的是基于Yeoman的平均值堆栈),要调用的端点是:

/auth/local
请注意,您应该使用x-www-form-urlencoded和两个键值属性(电子邮件和密码)进行POST调用。端点将返回您需要存储的令牌,以便进行后续调用

下一步是调用端点本身,我向/all local发出了GET请求,并添加了一个名为Authorization的头,其值为Bearer[token],用第一次调用的令牌值替换[token]


希望有帮助。

如果删除
{session:false}
,会发生什么情况?仍然不起作用,我删除了会话标志,如果我从curl或postman尝试,它会起作用,但是如果我从浏览器尝试(我登录到系统并从浏览器调用url,我收到消息“UnauthorizedError:未找到授权标头”。这就像系统试图强迫我使用基本身份验证,即使我使用本地策略登录。嗨,我也面临着同样的问题,我需要你的帮助来解决这个问题,因为我没有得到你的最后一点。请指导我你应该使用express route文件中的代码片段,并验证你将需要POSTMAN,这是一个REST客户端,并打两个电话f第一个得到类似于``{“token”的令牌:“Eyj0Exaioijkv1qilcjHbgChiijiuzi1Nij9.Eyjfawqioi1ndcwzgy3mjixOgy5Guwmdhmywy5MuIllcjPyxqiojE0mJy5Nta0odu4NjusiMV4Cci6TqynjK2odQ4ntg2nTg2nX0.gyxenjLibjMifxDc\u aaxNm8Zv1Nv1VbxxFx6Gi”```的令牌,```使用此令牌,从邮递员处进行第二次呼叫,作为具有标头授权和值承载器EYJ0EXAIIOIJKV1QILC的GET。。。。