【问题标题】:Devise token auth giving stale tokens设计令牌身份验证以提供陈旧令牌
【发布时间】:2016-05-08 09:07:45
【问题描述】:

我花了太长时间试图弄清楚这一点,而谷歌却帮不上什么忙。我在客户端上使用带有 ng-token-auth 的 devise-token-auth gem 来进行令牌身份验证,登录后它不断给我一个陈旧的令牌。具体来说,是用于用户的最后一个令牌,即使返回一个新令牌并将其存储在 cookie 中。更令人困惑的是,如果我刷新页面,我会突然得到正确的令牌,并且身份验证按预期工作。上周一切正常,所以我对我所做的更改可能导致这种情况发生有点不知所措。有没有人以前或现在看到过这个是什么原因造成的。它快把我逼疯了。

初始化程序/devise_token_auth.rb

DeviseTokenAuth.setup do |config|
    config.change_headers_on_each_request = false
    config.default_confirm_success_url = "confirmed"
    remove_tokens_after_password_reset = true
    config.token_lifespan = 24.hours
end

routes.rb

  mount_devise_token_auth_for 'User', at: 'api/auth'

我真的不知道发生了什么,也不知道为什么它会这样折磨我。任何帮助是极大的赞赏。如果有任何我没有包含的代码有助于回答这个问题,请告诉我。

【问题讨论】:

  • 服务器日志是否显示一个新的令牌被发送回 Angular?是否有角度没有正确存储新令牌?日志会帮助我们。
  • 服务器日志除了发送回令牌之外并没有真正提供太多指示。 validateuser 响应显示从服务器发送的令牌无效,然后在刷新标头后包含正确的令牌。
  • 您在初始化程序中缺少配置:config.remove_tokens_after_password_reset = true
  • 谢谢@Anand,我一定会把它添加进去。我没有意识到有一个配置。

标签: ruby-on-rails ruby angularjs devise


【解决方案1】:

我不确定这是否是解决此问题的最佳方法,但我设法通过注入 ipCookies 并检查是否在请求配置标头为空时使用它来在客户端中修复它。登录后配置将为空,但 cookie 会存在。因此,为了防止出现任何问题,我还会检查 cookie 是否存在,如果存在,则使用它们。我不确定我是否喜欢这个解决方案,但它确实有效。

var injector = angular.injector(['ipCookie']);
var cookies = injector.get('ipCookie');
var auth_headers = cookies('auth_headers');

if ((config.headers['access-token'] || auth_headers['access-token']) && !$httpProvider.defaults.headers.common['access-token']) {
    $httpProvider.defaults.headers.common['Access-Token'] = config.headers['access-token'] || auth_headers['access-token'];
    $httpProvider.defaults.headers.common['Token-Type'] = config.headers['token-type'] || auth_headers['token-type'];
    $httpProvider.defaults.headers.common['Client'] = config.headers['client'] || auth_headers['client'];
    $httpProvider.defaults.headers.common['Expiry'] = config.headers['expiry'] || auth_headers['expiry'];
    $httpProvider.defaults.headers.common['Uid'] = config.headers['uid'] || auth_headers['uid'];
}

【讨论】:

    猜你喜欢
    • 2017-01-01
    • 2013-11-20
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多