我测试了新的rails 5 api。我想通过js客户端创建一个oauth2服务器。
我使用Doorkeeper来管理oauth2服务器。
在我的routes.rb中我有
resource_owner_authenticator do
User.find_by_id(session[:user_id]) || redirect_to(new_user_session_url)
end
doorkeeper.rb
ActionView::Template::Error (undefined local variable or method `new_oauth_application_path' for #<#<Class:0x007fbf1f70c908>:0x007fbf1f72f8b8>)
当我转到&#39; http://localhost:3000/oauth/applications&#39;时,我收到了错误消息:
get '/oauth/applications/:id(.:format)', to: 'doorkeeper/applications#show', as: 'edit_oauth_application'
get '/oauth/applications(.:format)', to: 'doorkeeper/applications#index', as: 'root'
门卫不能完全使用导轨5吗?如果不是,你知道门卫这样的宝石吗?
我手动创建routes.rb中的路由
的示例:
{{1}}
现在我已经有了未定义的方法`flash&#39;&#34;。
答案 0 :(得分:3)
在尝试在仅使用Rails 5 api的应用程序上使用门卫时,我偶然发现了同样的问题。
按照之前的建议将我的ApplicationController
祖先改为ActionController::Base
对我来说无效。经过深入挖掘后,我找到了解决方案。
简答:doorkeeper
不适用于仅支持api的应用,因为您可以看到here和here。
我设法使其工作的方式是重新启用Rails 5的api-only
选项剥离的所有中间件和帮助程序......
简而言之,添加
require "sprockets/railtie"
位于config/application.rb
的顶部并设置
config.api_only = false
在同一个文件中,使门卫按预期加载。
即使现在您的应用程序加载了一堆先前被剥离的中间件,但仍然保留了API功能,并且控制器仍然是轻量级的,因为它们仍然继承自ActionController::API
。
答案 1 :(得分:0)
我通过ActionController :: Base更改ActionController :: API以使其工作。