新手,在 rails API 模式使用中遇到了一个问题。
想将 session 的信息存在本地缓存中,自己也新建了
config/initializers/session_store.rb
并填写了内容
Rails.application.config.session_store :cache_store, key: '_test_api_session'
但是我在使用中 设置了 session["test"] = 123 后,在其他类的方法里 通过 session["test"] 无法获取到 123,在查看 session 为空。
不知道是哪里设置的不对还是我理解的不对。
求解答。不知道问题有没有描述清楚....
----------------------------update ---------------------------------
找到了解决办法。上午找了一上午没找到,这会一会就找到了。
参考了 https://stackoverflow.com/questions/15342710/adding-cookie-session-store-back-to-rails-api-app 中的解决办法。
原因 是因为 Rails API-only 模式 并不支持 cooke 与 session 这些,需要手动添加支持。
添加方法是在 config/application.rb 中追加 下面这两段
config.middleware.use ActionDispatch::Cookies
config.middleware.use ActionDispatch::Session::CookieStore, key: '_test_api_key'
然后根据我上面说的,创建那个文件指定是哪种方式,默认是 cooke 存储 session。如果你有别的需要,可以对其修改,支持本地、Active_record 以及 memcache 等的存储。
好了,结帖了。