2012-09-28 23 views
3

我在我的應用程序中使用Devise gem進行Web身份驗證。什麼是正確的方式來使用移動設備(Rails)設計寶石認證

現在我是要寫我的應用程序移動應用,其中包括登錄/註冊過程。

什麼是我應該使用在用戶登錄和驗證由用戶從移動應用的每次調用正確的方法是什麼?

以下策略的哪個是正確的? (我不是一定要按照哪種方法更安全)

enter image description here

注意:您可以FYI查看http://i.stack.imgur.com/I13uT.png上面的圖片(會更清楚)

:我使用Titanium開發移動應用程序和我的後端服務器運行Rails應用程序

+0

我只是想仔細檢查,但這是一個Rails應用程序充當您的服務器,對嗎? – jstim

+0

是的。你是對的。 – balanv

+0

謝謝,我會盡量將下面的答案放在一起。 – jstim

回答

3

模型1不安全,您未在隨後的請求上傳遞任何類型的身份驗證來驗證用戶仍然是誰他們說。

我假設你真的想知道的是,登錄後驗證用戶是誰,他們說他們是誰的最佳方式是什麼。我以前回答過這個問題,Exposing Rails/Devise Authentication to iOS application,同樣的答案適用於此處。

在設計使用令牌認證將匹配模型#2,也是最安全的,因爲你換一個令牌的用戶名/密碼,而不是存儲他們的用戶名和密碼,每個請求重新使用。

+0

非常感謝.. !! – balanv

2

我不知道1號是如何安全的,因爲在所有沒有任何後續請求中以任何方式簽署。如果有人知道你的應用的文件結構,他們可以這樣訪問它,對嗎?

有了設計,你可以在你的User模型的屬性集,允許用戶通過令牌認證方式:

class User < ActiveRecord::Base 
    devise :token_authenticatable 
    # there are other details and options on this, but this is the relevant piece 
end 

在每個控制器還可以驗證用戶是通過包括before_filter :authenticate_user!在開始認證:

class PostsController < ActionController::Base 
    before_filter :authenticate_user! 
end 

當進行從所述移動應用的請求,包括在所述請求,使得Rails應用程序可以響應之前驗證的auth_token。

認證之外,還可能有興趣在類似CanCan處理授權爲好。

+0

authtoken會在每次調用時刷新嗎?或者它會是靜態的? – balanv

+0

默認情況下,我認爲令牌是靜態的,但是對於設計2.1,您可以添加一行到設計的配置,以在會話超時時重置令牌。 'config.expire_auth_token_on_timeout = true' https://github.com/plataformatec/devise/commit/b1b6e53d6fa74a19286c2d00672fbd3bcf86b68b – jstim

+0

哦,太棒了。謝謝。 +1持續響應.. – balanv

相關問題