【发布时间】:2016-06-16 12:23:15
【问题描述】:
我有一个仅限 Rails api 的应用程序 [config.api_only = true],我在其中通过以下几行启用 cookie:
在 application.rb 中:
config.middleware.insert_after ActionDispatch::ParamsParser, ActionDispatch::Cookies
config.middleware.insert_after ActionDispatch::ParamsParser, ActionDispatch::Session::CookieStore
在 application_controller.rb 中
include ActionController::Helpers
include ActionController::Cookies
我还添加了secret_token.rb,如下:
Rails.application.config.secret_token = 'token'
在我的控制器中,我试图像这样存储会话:
def index
#other codes
session[:userid] = useridstring
render :text => session[:userid]
end
注意:但是,在 chrome 中执行此操作后,我正在检查 cookie,但未设置任何内容...
然后在同一个控制器中,但在另一个动作中,我试图像这样读取会话:
def readsession
userId = session[:userid]
render :text => userId
end
什么都没有渲染.. :(
有什么我错过的吗?
我尝试按照答案here 建议我设置config.api_only = false,但是结果是一样的(我没有设置cookie,当在另一个控制器中读取时,会话仍然是空的
对不起,这是一个如此基本的问题(或初始配置问题),我对ruby和rails还是很陌生..
【问题讨论】:
-
支持您的 API 由主板应用程序使用,那么该应用程序将如何存储 cookie?当然,浏览器可以使用 cookie,但通用应用程序或 API 的一般使用者可能无法这样做。所以你最好需要使用令牌进行身份验证。
-
@BilalMaqsood:哦.. 是的,它适用于移动设备!我没有想到..我如何使用令牌进行身份验证? :O
-
@BilalMaqsood:cookie 确实在移动设备中可用,在 Android 中结帐 CookieManager,并且 NSUrlConnection 还在 iOS 中自动处理 cookie。我想知道你是如何处理令牌的。我知道解析。 com也是这样做的
-
我已经给出了通过令牌进行身份验证的答案。看看吧。
标签: ruby-on-rails ruby session cookies session-cookies