2013-07-24 52 views
0

我正在尋找一些有關我的web應用程序的身份驗證的建議。我正在使用Node,Express和Passport構建此應用程序Web應用程序身份驗證策略

該應用程序具有使用基本身份驗證(無會話創建)的REST API,並使用表單身份驗證(創建會話)來託管多個Angular.js網頁。

我希望Angular頁面連接到使用不同Auth策略的REST API。看起來我有兩種選擇:

  1. 創建一個自定義的基本身份驗證中間件,(因爲Passport不開箱即用)。這將做會話驗證,如果要求有一個,否則標準基本認證

  2. 公開兩個API的一個使用基本身份驗證(外用),和一個與形式驗證(用於應用程序頁)

如果也聽說使用OAuth2可能是一種選擇,但是隻有在與第三方進行身份驗證時纔有意義。

+0

旨在訪問來自相同的端點相同內容的兩種身份驗證策略? – max

回答

1

我現在的解決方案是在其餘api上執行混合auth(會話和基本)。如果會話存在繼續,則執行基本身份驗證。具體如下:

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) 
+0

經過1個多小時的堅持,最後一行成就了我的一天! – ismriv