在 rails api 应用程序中存储会话
storing session in rails api application
我有一个仅 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 并且 none 已设置...
然后在同一个控制器中,但在另一个操作中,我试图像这样读取会话:
def readsession
userId = session[:userid]
render :text => userId
end
没有渲染任何东西..:(
有什么我遗漏的吗?
我尝试按照建议我设置 config.api_only = false
的答案 here,但是结果是一样的(我没有设置 cookie,并且在另一个控制器中读取时,会话仍然是空的
抱歉,这是一个如此基本的问题(或初始配置问题),我在 ruby 和 rails..
中仍然很新
由于 API 始终独立于客户端,因此最好使用令牌进行身份验证。
方法如下:
- 在
users
table 中添加名为 token
的列。
- 有用户来登录。
- 当他登录时,生成一个令牌(一串随机字符),并保存在数据库中。
- 字符串也被传递,任何后续请求都将带有该令牌。
- 由于每个请求都带有一个令牌,您可以检查该令牌是否存在于数据库中,以及与正确用户的关联。
- 当用户注销时,从数据库中删除令牌。
我有一个仅 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 并且 none 已设置...
然后在同一个控制器中,但在另一个操作中,我试图像这样读取会话:
def readsession
userId = session[:userid]
render :text => userId
end
没有渲染任何东西..:(
有什么我遗漏的吗?
我尝试按照建议我设置 config.api_only = false
的答案 here,但是结果是一样的(我没有设置 cookie,并且在另一个控制器中读取时,会话仍然是空的
抱歉,这是一个如此基本的问题(或初始配置问题),我在 ruby 和 rails..
中仍然很新由于 API 始终独立于客户端,因此最好使用令牌进行身份验证。
方法如下:
- 在
users
table 中添加名为token
的列。 - 有用户来登录。
- 当他登录时,生成一个令牌(一串随机字符),并保存在数据库中。
- 字符串也被传递,任何后续请求都将带有该令牌。
- 由于每个请求都带有一个令牌,您可以检查该令牌是否存在于数据库中,以及与正确用户的关联。
- 当用户注销时,从数据库中删除令牌。