gpt4 book ai didi

ruby-on-rails - 设计没有 session cookie 的 token_authenticable

转载 作者:行者123 更新时间:2023-12-04 07:30:01 25 4
gpt4 key购买 nike

我正在使用 Rails 3 并且我已经成功地构建了一个 web api。对于一堆 Controller 需要登录,所以我决定使用 Devise 和 token_authenticable。它正在工作,但并不完全符合我的预期:虽然我需要为每个请求提供我的登录 token ,但它看起来只需要一次,然后系统会像正常的浏览器 session 一样在响应中创建一个 cookie。我想实现像 facebook graph api 这样的东西,其中每个请求都需要提交 session token 才能工作。

如果我使用 web api,我可以设置任何标志来指示 Devise 不发送 session cookie,如果我使用浏览器,则发送 session cookie?

最佳答案

我有同样的问题。

我的 API 的 Sessions Controller 中有一行:

 warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")

它正在登录用户并创建一个 session (我一开始没有注意到)

解决方案是使用类似的东西(在 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

基本上不是登录用户,而是检索 token 。除了注销之外,应用程序的其他部分工作正常。

关于ruby-on-rails - 设计没有 session cookie 的 token_authenticable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com