0

我正在为我的网络应用程序寻找一些关于身份验证的建议。我正在使用 Node、Express 和 Passport 来构建这个应用程序

该应用程序有一个使用基本身份验证(不创建会话)的 REST API,并使用表单身份验证(创建会话)托管多个 Angular.js 网页。

我希望 Angular 页面连接到使用不同身份验证策略的 REST API。看来我有两个选择:

  1. 创建一个自定义的 Basic Auth 中间件,(因为 Passport 没有开箱即用)。如果请求有一个,这将执行会话身份验证,否则为标准基本身份验证

  2. 公开两个 API,一个带有 Basic Auth(供外部使用),一个带有表单 Auth(用于应用程序页面)

如果还听说使用 OAuth2 可能是一种选择,但肯定只对与第三方进行身份验证才有意义?

4

1 回答 1

1

我目前的解决方案是在其余 api 上执行混合身份验证(会话和基本)。如果会话存在继续,否则执行基本身份验证。如下:

api.coffee:

app.api.external.get("/agents", [auth.basic], (req, res) ->
    res.json myListOfAgents

auth_middleware.coffee

basic: (req, res, next) ->
    if req.isAuthenticated()
        return next()
    else
        return passport.authenticate('basic', { session: false })(req, res, next)
于 2013-07-24T12:16:17.100 回答