2016-07-17 74 views
0

我有一個從一開始就使用cookie會話認證(devise)的rails web。現在,我們正在開發一種離子移動應用程序,它使用軌道應用程序提供的API。Rails在同一時間設計令牌和cookie會話

我已經考慮在這個新應用程序中使用JWT或令牌認證,但是我找不到一種方法來結合兩種認證方法,cookie和JWT。而且,這兩個應用程序都有不同的要求例如,在Web中,用戶只有在具有特定角色的情況下才能進行併發會話。相反,在移動應用程序中,可以沒有任何限制地同時進行會話。

我讀了很多試圖找出如何結合這兩種方法,但我找不到方法。也許我應該考慮只使用其中一種方法(JWT)或使用另一種方法(門衛)。

+0

的移動應用程序,你可以用'基於token'認證和網絡將遵循基於會話的認證,你做單獨的控制器的API? – uzaif

+0

不,我想爲兩個應用程序使用相同的控制器,如果可能的話。 – ReyLitch

+1

你可以在控制器上使用兩個before_filter回調用於基於會話的身份驗證,另一個用於基於令牌的身份驗證 – uzaif

回答

0

最後我找到了解決方案。根據refaelosZac Stewart,我將設計與智威湯遜結合起來,將最後一項作爲第一項新策略。通過這種方式,當我不使用JWT令牌時,devise將選擇默認策略(在我的情況下爲database_authenticatable)。否則,它將使用智威湯遜策略。

但是,當用戶未通過身份驗證並向Session#create發出請求以獲取憑證時,devise/warden選擇的策略是database_authenticatable。爲了避免這種情況,我需要爲請求添加一個新參數,但僅限於這種情況,因爲正如我所說的,當令牌出現在請求中時,將選擇新策略。

參見:

相關問題