Express Passport基本身份验证仅适用于API请求

Express Passport基本身份验证仅适用于API请求,express,passport.js,Express,Passport.js,我正在编写一个express/node/angular应用程序。当客户端角度控制器需要一些数据时,它们使用返回JSON的端点从服务器请求数据 这个端点位于一些passport.authenticate('local')中间件的后面,但是这个端点正是公共API所需要的 我们的API使用一个passport.authenticate('basic')(basichttpauth) 我正试图找到一种方法来为这两个站点使用相同的URL,但我不希望未登录到我的站点的用户看到http身份验证窗口。我需要告诉

我正在编写一个express/node/angular应用程序。当客户端角度控制器需要一些数据时,它们使用返回JSON的端点从服务器请求数据

这个端点位于一些
passport.authenticate('local')
中间件的后面,但是这个端点正是公共API所需要的

我们的API使用一个
passport.authenticate('basic')
(basichttpauth)

我正试图找到一种方法来为这两个站点使用相同的URL,但我不希望未登录到我的站点的用户看到http身份验证窗口。我需要告诉“这是一个API请求,还是来自站点的xhr请求”

例如,我希望以下URL适用于本地经过身份验证的用户(通过
/login
路由进行身份验证)或API用户:

app.get('/api/v1/tasks',passport.authenticate('basic'),tasks.list)


据我所知,唯一可行的方法是将这些URL拆分为两个不同的URL,一个供站点内部使用,另一个供公共API使用。也许这是一种更好的安全/组织策略?

谢谢,效果很好