2014-12-03 78 views
1

我正在使用基於Yeoman生成器的MEAN堆棧,並且正在嘗試密碼保護我的api端點。如何在同一端點上使用護照js本地和基本策略?

我希望能夠在同一端點上使用本地和基本策略,以便我可以從外部來源調用API並在我的webapp中使用它。

但是,當我執行此操作時,我一次只能使用一種策略,因爲基本身份驗證是「無狀態」,這意味着不附加會話。

到目前爲止,我得到了2個不同的端點,2個不同的策略與此代碼:

router.get('/all-basic', passport.authenticate(['local','basic'],{ session: false }), controller.index); 

router.get('/all-local', auth.isAuthenticated(), controller.index);

我想知道是否有任何其他方法或最佳實踐嘗試上使用兩種策略相同的端點,或者我只需要調用2個不同的端點。

謝謝! Andres Osorio

+0

如果刪除'{session:false}',會發生什麼? – 2014-12-03 16:04:51

+0

仍然無法正常工作,我刪除了會話標誌,如果我試着從curl或郵遞員那裏工作,但如果我嘗試從我的瀏覽器(我登錄到系統並從瀏覽器調用url,我收到了此消息「 UnauthorizedError:No Authorization header was found。「這就像系統試圖強迫我使用基本身份驗證,即使我使用本地策略登錄。 – 2014-12-05 13:11:47

回答

0

經過多次嘗試,我找到了一個解決方案。

我使用的第二個端點:

router.get('/all-local', auth.isAuthenticated(), controller.index); 

我用郵差提出兩點要求:

一個用於登錄嘗試,(如果你使用的是基於MEAN堆棧自耕農),端點電話是:

/auth/local 

請注意,你應該做的X WWW的形式,進行了urlencoded和兩個鍵值屬性(電子郵件和密碼)的POST調用。端點將返回您需要存儲的令牌,以便進行後續調用。

下一步是調用端點本身,我向/ all-local發出了一個GET請求,並且我添加了一個名爲Authorization的標頭,其值爲承載[令牌],用令牌值替換[token]第一個電話。

希望它有幫助。

+0

嗨,我也面臨同樣的問題,我需要你的幫助來解決這個問題,因爲我沒有得到你的最後一點請引導我 – gowthaman 2015-03-20 08:52:13

+0

你應該使用你的快速路徑文件中的代碼片段,並驗證你將需要POSTMAN這是一個REST客戶端,並從那裏進行2次調用。第一個獲得像''' { 「令牌」: 「eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfaWQiOiI1NDcwZGY3MjIxOGY5MGUwMDhmYWY5MmUiLCJpYXQiOjE0MjY5NTA0ODU4NjUsImV4cCI6MTQyNjk2ODQ4NTg2NX0.GyYXeNJlIBjPmiFXdc_Aaxnm8Zxv1nm1VbX3FX6TVGI」''' },使用此令牌的'''使來自POSTMAN的第二個調用作爲具有標頭授權和值承載的GET GET_ejAeAiOiJKV1QiLC .... – 2015-03-21 15:13:52

相關問題