【问题标题】:devise_token_auth with multiple models and auth headers具有多个模型和身份验证标头的 devise_token_auth
【发布时间】:2016-07-30 02:11:27
【问题描述】:

这是我的问题,我覆盖了用户模型的控制器:

mount_devise_token_auth_for 'User', at: 'auth', controllers: {
     registrations:      'v1/authentication/registrations'
     sessions:           'v1/authentication/sessions'
     token_validations:  'v1/authentication/token_validations'
 }

这很好用,没有问题。但是,当我使用相同的控制器添加新模型时:

mount_devise_token_auth_for 'Admin', 'admin_auth', controllers: {
   sessions:           'v1/authentication/sessions',
   token_validations:  'v1/authentication/token_validations'
}
mount_devise_token_auth_for 'User', at: 'auth', controllers: {
   registrations:      'v1/authentication/registrations',
   sessions:           'v1/authentication/sessions',
   token_validations:  'v1/authentication/token_validations'
}

Admin 模型的响应标头没有身份验证密钥。响应正常(200)但不返回身份验证标头。但是,如果删除 Admin 模型的控制器部分(覆盖),则响应将返回身份验证密钥。顺便说一句,覆盖只会改变控制器的渲染方法。任何人都可以帮助找到解决这个问题的方法吗?

【问题讨论】:

  • 您是否为管理员设置了 :confirmable?如果是这样,

标签: ruby-on-rails access-token rails-api devise-token-auth


【解决方案1】:

有关信息,我找到了解决方案 here 并且它有效。

我们需要覆盖第二个模型的设计令牌身份验证控制器并确定成功响应的范围。

例如,如果第二个用户是Customer

#routes.rb
mount_devise_token_auth_for 'Customer', at: 'customer_auth', controllers: {
  sessions: 'api/v1/customer_auth/sessions',
  registrations: 'api/v1/customer_auth/registrations'
}
# controllers
class Api::V1::CustomerAuth::SessionsController < DeviseTokenAuth::SessionsController
  protected

  def render_create_success
    render json: {
      data: resource_data(resource_json: @resource.token_validation_response)
    }, scope: current_customer
  end
end

class Api::V1::Sps::CustomerAuth::RegistrationsController < DeviseTokenAuth::RegistrationsController
  protected

  def render_create_success
    render json: {
      status: 'success',
      data: resource_data
    }, scope: current_customer
  end
end

事实上documentation 谈到了它,但我认为它不是很明确。

【讨论】:

  • 这对我有用,谢谢!这很糟糕,但文档中没有明确说明
  • 这应该被添加到文档中,或者甚至更好——修复 DTA,这样就无需通过覆盖现有控制器来实现多个模型。
猜你喜欢
  • 2018-09-26
  • 2015-09-09
  • 2020-07-12
  • 2014-10-19
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
相关资源
最近更新 更多