我在我的项目中使用 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 = false
在 application.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/