我有同样的问题。
有我的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