ruby-on-rails - Rails_API gem 中的 session

标签 ruby-on-rails session rails-api

我在我的项目中使用 rails_api gem。我想为身份验证添加 session 管理,但 session 似乎不起作用。这是我在 config/initializer/session_store.rb 中的配置:

Pmcapi::Application.config.session_store :cookie_store, {

  key: '_pmcapi_session', 
  expire_after: 1.hour
}

我加了 config.api_only = falseapplication.rb ( Adding cookie session store back to Rails API app )

在我的 session_controller , 我添加了 session 来存储 token
# session_controller.rb
def create
  #just to generate new token
  user.reset_sso_token!
  session[:token] ||= user.sso_token
  self.current_user = user
  redirect_to root_path
end

当在 application_controller , 我要访问 session[:token]但结果是 nil :
# application_controller.rb
def authenticate_user!
  #puts("User Authentication")
  #puts(request.authorization)
  #puts(request)
  @user = User.authenticate_with_token(session[:token])
  #head :unauthorized unless @user.present?
  redirect_to sign_in_path if @user.nil?
end

最佳答案

我从你身上看到的config.api_only = false这条线基本上使 Rails 使用完整堆栈而不是保持纤薄,这是您可以使用 rails-api 的主要原因所以我建议尝试类似的东西

config.middleware.use Rack::Session::Cookie

在您的应用程序 Controller 中。

如果这不起作用,我建议您关注 This pull request about session management in the rails 4 stack

关于ruby-on-rails - Rails_API gem 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18971231/

相关文章:

ruby-on-rails - 使用 devise 通过 JSON 对 API 登录请求进行身份验证

ruby-on-rails - DataTables 全局搜索缺少 FROM 子句

session - Tomcat 上 session 复制的缺点是什么?

ruby-on-rails - 常规 Rails 应用程序和 Rails API 有什么区别?

ruby-on-rails - REST API 版本控制 - 为什么模型没有版本控制

php - 从其他类访问登录的 User 对象的最佳实践

ruby-on-rails - MongoMapper和bson_ext问题

javascript - 将 OwlCarousel 合并到 Rails 应用程序中

ruby-on-rails - mongoid、set_table_name 和 attr_accessible

c# - 在 WCF 请求中存储数据的位置