在 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 始终独立于客户端,因此最好使用令牌进行身份验证。

方法如下:

  1. users table 中添加名为 token 的列。
  2. 有用户来登录。
  3. 当他登录时,生成一个令牌(一串随机字符),并保存在数据库中。
  4. 字符串也被传递,任何后续请求都将带有该令牌。
  5. 由于每个请求都带有一个令牌,您可以检查该令牌是否存在于数据库中,以及与正确用户的关联。
  6. 当用户注销时,从数据库中删除令牌。