路径中有2个devise_for定义时,路径冲突

时间:2019-05-11 21:04:00

标签: ruby-on-rails devise jwt-auth

我的Rails 5应用程序有一个管理员,该管理员使用常规的devise登录过程。路由的作用域位于/admin

  scope '/admin' do
    devise_for :users, singular: :admin_user
  end

此外,该应用程序还为移动设备提供了API。该API使用JWT令牌进行身份验证。 devise-jwt宝石用于此目的。

我将devise_for方法的作用域设置在api / v1下,如下所示:

scope :api, module: :api do
   scope :v1, module: :v1 do
      devise_for :api_users,
                 class_name: 'User',
                 resource_name: 'user',
                 name: 'user',
                 path: '',
                 path_names: {
                     sign_in: 'login',
                     sign_out: 'logout',
                     registration: 'signup'
                 },
                 controllers: {
                     sessions: 'api/v1/sessions',
                     registrations: 'api/v1/registrations'
                 }
    end
  end

通过对api/v1/login的JSON调用,我可以登录。不幸的是,可能由于resource_name不匹配,JWT令牌未添加为标头。

当我将devise_for资源参数从:api_users更改为:users并注释/admin范围devise_for时,它起作用了。

我希望有人可以找到解决该问题的方法。它已经困扰了我好几天,我想我已经尝试了路由文件中名称空间/范围/模块参数的所有可能映射和组合。

0 个答案:

没有答案