Rails 5 - 当路由命名空间时,JWT无法正常工作

时间:2016-11-22 00:00:01

标签: ruby-on-rails ruby jwt ruby-on-rails-5

我正在使用Knock进行Rails 5 API的JWT身份验证。

我有这个Routes文件:

Rails.application.routes.draw do
    namespace :api, constraints: { subdomain: 'api' }, path: '/' do
        namespace :v1 do
            post 'user_token' => 'user_token#create'
        end
    end
end

有了这个,我希望能够发出一个POST请求来创建这样的新令牌:

  

POST http://api.domain.com/v1/user_token

但是这个请求给了我以下错误:

  

NameError:未初始化的常量API :: V1 :: User

我能理解的是,Knock正试图在控制器(User)所在的同一命名空间上访问模型user_token_controller。但我的模型不是命名空间:

class User < ApplicationRecord
  has_secure_password
  #...
end

我的user_token_controller.rb

module API
    module V1
        class UserTokenController < Knock::AuthTokenController
        end
    end
end

我错了什么?

1 个答案:

答案 0 :(得分:0)

这是一个已经fixed但尚未发布的错误。

临时解决方案是使用github代码中的gem,如:

  

gem&#39; knock&#39;,github:&#39; psantos10 / knock&#39;,branch:&#39; master&#39;

https://github.com/nsarno/knock/issues/120