2014-01-23 19 views
8

我正在閱讀設計gem的初始化文件(config/initializers/deviser.rb),並且很難理解這部分。Devise gem中的'skip session storage'是什麼意思?

# By default Devise will store the user in session. You can skip storage for 
# :http_auth and :token_auth by adding those symbols to the array below. 
# Notice that if you are skipping storage for all authentication paths, you 
# may want to disable generating routes to Devise's sessions controller by 
# passing :skip => :sessions to `devise_for` in your config/routes.rb 

config.skip_session_storage = [:http_auth] 

我在看這個的原因是因爲我想要使用的API基於令牌的認證,在這種情況下,我需要的是配置行更改爲:

config.skip_session_storage = [:http_auth, :token_auth] 

誰能解釋評論意見是什麼?

回答

2

很簡單,它告訴Devise不要將用戶存儲在會話中。這裏有另一種解釋:

skip_session_storage +:默認情況下,Devise會將用戶存儲在會話中。默認情況下,您可以通過將數值附加到array::skip_session_storage => [:token_auth]或:skip_session_storage => [:http_auth,:token_auth]來跳過http和token auth的存儲設置爲skip_session_storage => [:http_auth]。

Devise::Models::Authenticatable

爲了您的意圖和目的,我會用督導員/設計禁用會話緩存;我相信它受到某些API的干擾(儘管如此,請不要說我的話)。希望有所幫助。

1
# Notice that if you are skipping storage for all authentication paths, you 
# may want to disable generating routes to Devise's sessions controller by 
# passing :skip => :sessions to `devise_for` in your config/routes.rb 

這部分告訴你,如果你禁止使用會話在以下行的所有身份驗證方法,如:

config.skip_session_storage = [:http_auth, :token_auth] 

那麼你並不需要通過自動生成會話路由devise_for默認值。 所以,你應該添加在你的config/routes.rb如下:

devise_for :users, :skip => :sessions 

希望它可以幫助一點。