2012-09-15 49 views
0

我在與使用本地策略passport.js麻煩以後的請求。我有2個具體問題:passport.js本地策略 - 記錄與用戶名,身份驗證令牌與

  1. 我沒有得到持續會話與示例代碼的工作(見下文 )爲最簡單的情況下。
  2. 我想去永久。對於 最基本的情況下,在登錄時,我會通過在一個用戶名+密碼 爲我提供了一個會話令牌,定期的請求,我會用一些其他的東西來驗證這個散列會議 令牌。這是 輕鬆完成護照?看起來護照在這種情況下並沒有提供太多的東西,並且製作我自己的解決方案更容易 - 只需使用標準檢查登錄/註銷,然後使用取消請求令牌的中間件來驗證請求。容易cheezy?

問題1:

從庫中使用的參考碼:

https://github.com/jaredhanson/passport-local/blob/master/examples/login/app.js

我做的一系列命令,以顯示登出VS登錄:

A.支票/賬戶,未登錄

curl -v localhost:3000/account 

正如預期的那樣,我得到一個重定向到/登錄

<p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p> 

B.登錄

curl -v -d "username=bob&password=secret" http://127.0.0.1:3000/login 

而且正如所料,我得到重定向到/

<p>Moved Temporarily. Redirecting to <a href="http://127.0.0.1:3000/">http://127.0.0.1:3000/</a></p> 

C.檢查/賬號,登錄

curl -v localhost:3000/account 

搞什麼鬼???

<p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p> 

回答

6

在1的情況下,會話支持需要要在服務器側配置並通過您的用戶代理使用的cookie。通常這是一個瀏覽器,它將在每個請求中傳輸cookie,服務器使用它們來恢復您的登錄狀態。

但是,你正在使用不會傳播餅乾捲曲的命令,所以每個請求看起來「新」服務器,這就是爲什麼你看到重定向每次登錄。我懷疑如果你在瀏覽器中嘗試相同的請求,這將按預期工作。

至於2,我需要更多的一些細節提出了很好的解決。如果您使用HTML和Web瀏覽器來訪問您的網站,您最終會需要類似會話的內容。您可以每次都在查詢參數中傳輸此信息,而不是Cookie,但您最終將重建許多Express/Connect提供的開箱即用功能。

在任何情況下,如果您選擇遵循該路線,Passport將提供一個乾淨的界面來實施您自己的認證策略。您只需解析相關憑證的請求並在數據庫中查找用戶。

API客戶端不同,我建議看看Passport的OAuth支持,它提供了簡單的方法來驗證與特定客戶端關聯的訪問令牌。

+0

我的系統或多或少是智能手機客戶端的API,它只需登錄一次然後使用會話令牌。我使用護照搞亂了OAuth,並且運行良好;我會看看實施我自己的戰略。 – nflacco

+0

很高興看到創作者積極給予支持。我是一名休閒遊戲開發人員,PassportJS爲我節省了大量開發時間。 +1 – Legendre

2

問題不在於護照,curl命令需要存儲cookie,所以-c-b參數應該用來模仿瀏覽器行爲。從捲曲手冊頁:

curl -b cookies.txt -c cookies.txt www.example.com

這是什麼命令呢,是儲存在cookie.txt的餅乾和發送cookie從cookie.txt的閱讀他們 - 這是正路捲曲模仿網景的cookie-jar文件格式來寫並閱讀。

至於你的問題本身,傑瑞德已經回答了!

相關問題