我正在写一个快速/节点/角度应用程序。当客户端角度控制器需要一些数据时,他们使用返回JSON的端点从服务器请求它。
此端点位于某些passport.authenticate('local')
中间件之后,但此端点正是我们对公共API所需的。
我们的API使用passport.authenticate('basic')
(基本http身份验证)。
我正在尝试找到一种方法来为两者使用相同的URL,但我不希望用户访问我的网站而未登录以查看http身份验证窗口。我不知何故需要告诉“这是一个API请求,还是来自网站的xhr请求”
例如,我希望以下网址适用于本地认证的用户(已经通过/login
路由进行了身份验证)或用于API用户:
app.get('/api/v1/tasks', passport.authenticate('basic'), tasks.list);
我所知道的唯一替代方案是将这些分为两个不同的URL,一个用于内部使用的站点,另一个用于公共API。也许这是一个更好的安全/组织策略?