我正在寻找一些针对我的网络应用进行身份验证的建议。我正在使用Node,Express和Passport来构建这个应用程序
该应用程序具有使用Basic Auth的REST API(无会话创建),并使用表单Auth(具有会话创建)托管多个Angular.js网页。
我希望Angular页面连接到REST API,它使用不同的Auth策略。看来我有两个选择:
创建自定义Basic Auth中间件,(因为Passport不会开箱即用)。如果请求有一个,则会执行会话Auth,否则为标准Basic Auth
使用Basic Auth(供外部使用)和使用表单Auth(适用于应用程序页面)展示两个API
如果还听说使用OAuth2可能是一种选择,但肯定只对第三方进行身份验证有意义吗?
答案 0 :(得分: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)