我有同樣的問題。
有我的API的會話控制線:
warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
有人登錄用戶,並創建一個會話(這是我沒有在第一通知)
的解決方案是使用與此類似(在blogpost找到):
@user=User.find_by_email(email.downcase)
if @user.nil?
render :status=>401, :json=>{:message=>"Invalid email or password."}
return
end
# http://rdoc.info/github/plataformatec/devise/master/Devise/Models/TokenAuthenticatable
@user.ensure_authentication_token!
if not @user.valid_password?(password)
logger.info("User #{email} failed signin, password \"#{password}\" is invalid")
render :status=>401, :json=>{:message=>"Invalid email or password."}
else
render :status=>200, :json=>{:token=>@user.authentication_token}
end
基本上沒有登錄用戶,但檢索令牌。除註銷外的其他應用程序部分工作正常。
如果它發送會話cookie,並且您忽略它---是否有任何損害? – 2013-03-08 15:31:03
這也很好。事實上,這就是目前的工作方式。這絕對不是一個生死攸關的問題......我只是好奇而已 – user1170896 2013-03-08 17:16:57
如果您將會話存儲在數據庫(或者memcache或其他)中,每次簽名用戶時,都會在您的基礎中添加一行。所以,如果你的API被廣泛使用,這可能是一個問題。所以,如果你可以登錄一個用戶但不存儲會話,那將是十分嚴峻的。 – joel1di1 2014-01-15 00:36:31