我在我的rails应用程序中使用了devise,而且我在' /...'中有一个html版本;和api at' / api / v#/ ...'设计控制器的实现应该与' / sign_in'不同。和' / api / v1 / sign_in'此外,我有一个ApiController,api名称空间中的所有控制器都继承自。
基本上我在我的应用程序中需要两套不同的设计,每组都有不同的父类。
我能够在api命名空间中生成控制器,并将设计的父级更改为ApiController,但这使常规站点搞砸了。那不会起作用。
我可以为我的ApiController创建一个模块,然后将它包含在每个设备控制器中......但这看起来很臭。
在api中我只需要一些设计功能,所以也许我可以在没有设计的情况下实现它们。但是,我失去了确认功能和其他东西。
我该怎么办?
如果您想查看任何代码,请告诉我。
答案 0 :(得分:0)
您可以指定路线中使用的控制器:
devise_for :users # uses the normal devise controllers
namespace :api do
devise_for :users, controllers: { sessions: 'api/sessions' }
end
class Api::SessionsController < Devise::SessionsController
end
这就是说 - 创建自己的控制器来处理带有Warden(Devise的低级组件)的API中的身份验证和会话非常简单,并且比使用设计基于令牌的auth或HMAC的设计更加清晰。