我在我的项目中使用rails_api gem。我想添加会话管理进行身份验证,但似乎会话无效。以下是config/initializer/session_store.rb
中的配置:
Pmcapi::Application.config.session_store :cookie_store, {
key: '_pmcapi_session',
expire_after: 1.hour
}
我在config.api_only = false
(Adding cookie session store back to Rails API app)
application.rb
在我的session_controller
中,我添加了会话以存储令牌
# 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
答案 0 :(得分:2)
从我的config.api_only = false
行我可以看到这基本上使得rails使用完整堆栈而不是保持苗条,这是你可以使用rails-api
的主要原因所以我建议尝试类似的东西
config.middleware.use Rack::Session::Cookie
在您的应用程序控制器中。
如果不起作用,我建议您注意This pull request about session management in the rails 4 stack
答案 1 :(得分:0)
Pmcapi :: Application.config.session_store:cookie_store,key:' _pmcapi_session',expire_after:1.hour 你可以在config / initializer / session_store.rb
中试试这个答案 2 :(得分:0)
我总是喜欢使用支持良好且有文档记录的宝石,而不是编写我自己的代码。原因是:
尽管如此,我强烈建议您使用Devise或其他一些成熟的身份验证宝石,而不是单独与这种事情搏斗。
我发现这篇文章很有用