如果我在mainapp/config/routes.rb
上设置以下代码,则所有路由都需要身份验证,我将无法在我的控制器中使用before_action :authenticate_user!, except: [:mypublic_method]
。
Rails.application.routes.draw do
devise_for :users
authenticate :user do
mount Myengine::Engine, at: '/myengine'
end
end
Rails似乎需要已安装的路由才能通过URL查看引擎。
如果我在mainapp/config/routes.rb
上设置以下代码,则所有路线都是公开的,但我只想制作我想要的方法。
Rails.application.routes.draw do
devise_for :users
mount Myengine::Engine, at: '/myengine'
end
如何使用mypublic_method
公开/可访问authenticate :user
(vendor / engines / myengine / app / controllers / myengine / mycontroller_controller.rb)?
P.S。同样的问题以另一种方式How can I avoid Devise from requires authentication from within an engine?
谢谢。
答案 0 :(得分:0)
我解决了这个问题,这很简单。现在我在我的引擎应用程序控制器中进行身份验证,而不是在我的主应用程序控制器上进行身份验证。
module Myengine
class ApplicationController < ActionController::Base
before_action :authenticate_user!
end
end
我还在config / routes.rb(主应用程序)
上删除了authenticate :user
mount Myengine::Engine, at: '/myengine'
这样我就可以在任何控制器中使用以下代码
before_action :authenticate_user!, except: [:mypublic_method]