2014-07-11 56 views
2

我正在嘗試修改Meteor應用程序(Telescope)以使用非基於oauth的身份驗證。在Meteor應用程序中實現基於非oAuth的身份驗證?

更具體地說,我想使用由我的大型Web框架設置的cookie作爲基於用戶名/令牌的認證機制。具體來說,我希望客戶端將cookie的用戶名和標記傳遞給服務器。然後,服務器將把用戶名和令牌傳遞給我的驗證服務器,驗證服務器將驗證令牌是否新鮮並與用戶名匹配。

我很困惑如何讓這個帳戶框架的工作。我認爲可以擴展Accounts.validateLoginAttempt來執行檢查,但是沒有辦法將cookie信息傳遞給該方法,是嗎?

或者,我可以創建一個新的accounts-xxxx軟件包,但所有其他帳戶軟件包似乎都使用oauth - 將創建一個非oauth軟件包,咬的比我咀嚼的多嗎?

或者我有一個更簡單的解決方案嗎?

回答

2

一件簡單的事情,你可以考慮(在技術上)是loginToken。您會注意到在您的Meteor用戶集合中有一個名爲resumeservices屬性下的列表。

這包含預先驗證的令牌,用戶可以使用該令牌登錄而不詢問登錄詳細信息(通常用於已經在該設備上登錄的人員,類似於Cookie)。

唯一的區別是,它使用localStorage的過餅乾,看起來有點像這樣:

Meteor.loginToken   => 4Cs_abcdEfghijklmn42cf4444445577889900120 
Meteor.loginTokenExpires => Wed Oct 08 2014 23:22:46 GMT 
Meteor.userId    => abcDEBG4Abc45A5vg 

如果你能得到(或創建)從用戶的簡歷簡歷的項目,你可以用它來記錄或許使用其他邏輯(例如,包含令牌的鏈接 - 比如來自電子郵件的鏈接),在您的望遠鏡應用中設置localStorage項目。

使用您驗證的令牌將其設置爲localStorage.setItem('Meteor.loginToken', '4cs_abcde....')

請記住,當您將它們發送到您的望遠鏡應用程序時,您應該使用某種可期望的令牌或某種東西(可能在您提到的cookie中)驗證用戶,因爲這確實可以讓人們輕鬆登錄。

相關問題