如何在同一端点上使用护照js本地和基本策略?

时间:2014-12-03 15:56:30

标签: node.js mean-stack passport.js

我使用基于Yeoman生成器的MEAN堆栈,并且我尝试使用密码保护我的api端点。

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

然而,当我实现这个时,我一次只能使用一个策略,因为基本身份验证是"无状态"这意味着没有附加会话。

到目前为止,我使用此代码获得了2个不同的端点和2种不同的策略:

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

router.get('/all-local', auth.isAuthenticated(), controller.index);

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

谢谢! 安德烈斯奥索里奥

1 个答案:

答案 0 :(得分:0)

经过多次尝试,我发现了一个解决方案。

我使用了第二个终点:

router.get('/all-local', auth.isAuthenticated(), controller.index);

我用邮递员提出了两个请求:

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

/auth/local

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

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

希望它有所帮助。