Doorkeeper 密码 grant_type - 密码更改时的令牌撤销(使用 Devise)和刷新令牌方法

upp*_*con 6 ruby-on-rails devise ruby-on-rails-4 doorkeeper

我目前正在与 Doorkeeper (+Devise) 合作开发 Rails 服务器和受信任的 iOS 应用程序。我已经有一个实施工作,但我对一些事情感到困惑。我已经阅读了有关此的维基: https: //github.com/doorkeeper-gem/doorkeeper/wiki/Interacting-as-an-OAuth-client-with-Doorkeeper

目前的流量:

  1. 用户在 iOS 应用程序中使用用户名和密码登录。这将发送到https://myserver.com/api/log_in
  2. 服务器检查凭据并使用 Devise 登录用户。然后它使用该方法以 access_token 进行响应Doorkeeper::AccessToken.find_or_create_for()
  3. iOS 应用程序保存此令牌并将其发送给Authorization:Bearer the_access_key所有未来的 API 调用

到目前为止一切顺利(即上述内容在我的测试中有效)。我的问题是:

  1. 刷新令牌 - iOS 应用程序是否应该主动检查是否需要刷新(即比较access_token created_atexpires_in然后根据刷新令牌的结果),或者应该尝试在 401 上刷新,并且刷新是否也得到400/401 然后停止并注销 iOS 上的用户?
  2. 在其他地方更改密码并撤销令牌。如果用户在网站上更改密码(使用 Devise),则该用户的所有 iOS 应用令牌都应被撤销。刷新令牌也应该失败,并且提示用户在 iOS 应用程序上再次登录。我还没有找到建议这方面最佳实践的文档。根据我的测试,这在 Doorkeeper 中不会自动发生,并且access_token仍然可以使用。处理这种情况的最佳/正确方法是什么?

在此先感谢您的时间。