什么'跳过会话存储'在Devise宝石意味着什么?

时间:2014-01-23 03:23:36

标签: ruby-on-rails authentication devise

我正在阅读Devise gem的初始化文件(config / initializers / deviser.rb),并且很难理解这一部分。

# 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 个答案:

答案 0 :(得分:2)

很简单,它告诉Devise不要将用户存储在会话中。这是另一种解释:

skip_session_storage +:默认情况下,Devise会将用户存储在会话中。您可以通过将值附加到数组来跳过存储以获取http和令牌身份验证:: skip_session_storage => [:token_auth]或:skip_session_storage => [:http_auth,:token_auth],默认设置为skip_session_storage => [:http_auth]

Devise::Models::Authenticatable

为了您的意图和目的,我将使用Warden / Devise禁用会话缓存;我相信它干扰了某些API(尽管我不接受我的话)。希望有所帮助。

答案 1 :(得分: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

希望它有所帮助。