加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 设计不带会话cookie的token_authenticatable

发布时间:2020-12-17 02:04:12 所属栏目:百科 来源:网络整理
导读:我正在使用Rails 3,并且我已经成功构建了一个web api.对于一堆控制器,需要登录,所以我决定使用Devise和token_authenticable.它工作但不完全像我期望的那样:我虽然需要为每个请求提供我的登录令牌,但它看起来只需要一次,然后系统在响应中创建一个cookie,就像
我正在使用Rails 3,并且我已经成功构建了一个web api.对于一堆控制器,需要登录,所以我决定使用Devise和token_authenticable.它工作但不完全像我期望的那样:我虽然需要为每个请求提供我的登录令牌,但它看起来只需要一次,然后系统在响应中创建一个cookie,就像普通的浏览器会话一样.我想实现类似facebook graph api的东西,其中每个请求都需要提交会话令牌才能工作.

是否有任何标志可以设置为指示Devise如果我使用web api并且如果我正在使用浏览器时发送会话cookie则不发送会话cookie?

解决方法

我有同样的问题.

我的API的Sessions控制器中有一行:

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

基本上不记录用户,但检索令牌.除了退出之外的其他应用程序工作正常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读