设计令牌身份验证和版本控制

时间:2015-12-16 16:14:52

标签: ruby-on-rails ruby devise rails-api api-versioning

我在使用api版本实现 mount_devise_token_auth_for 时遇到问题。
让我们说:

scope module: :v1, constraints: ApiConstraints.new(version: 1) do
    mount_devise_token_auth_for 'User', at: '/auth', skip: [  ],  controllers: {
       registrations:      'v1/users/registrations',
       sessions:           'v1/users/sessions'
    }
end

如果我想添加v2并在同一路径上安装身份验证,请执行以下操作:

scope module: :v2, constraints: ApiConstraints.new(version: 2, default: true) do
    mount_devise_token_auth_for 'User', at: '/auth', skip: [  ],  controllers: {
       registrations:      'v2/users/registrations',
       sessions:           'v2/users/sessions'
    }
end

它失败了,因为设备的命名路由助手已经存在这些名称 我可以使用命名空间来处理它,但我们不希望URI中的版本 请指教。
感谢。

1 个答案:

答案 0 :(得分:1)

我忘了发一个问题的答案。我必须用

定义v2
scope module: :v2, as: 'v2', constraints: ApiConstraints.new(version: 2, default: true) do
    mount_devise_token_auth_for 'User', at: '/auth', skip: [  ],  controllers: {
       registrations:      'v2/users/registrations',
       sessions:           'v2/users/sessions'
    }
end

' as:v2' part生成唯一的命名路由助手,一切正常。