Wenn ich den folgenden Code in meine mainapp/config/routes.rb
Für alle Routen ist eine Authentifizierung erforderlich, und ich kann sie nicht verwenden before_action :authenticate_user!, except: [:mypublic_method]
in meinem Controller
Rails.application.routes.draw do
devise_for :users
authenticate :user do
mount Myengine::Engine, at: "/myengine"
end
end
Rails scheint die bereitgestellten Routen zu benötigen, um die Engine über URLs zu sehen.
Wenn ich den folgenden Code in meine mainapp/config/routes.rb
Alle Wege werden öffentlich sein, aber ich möchte nur die Methoden machen, die ich will.
Rails.application.routes.draw do
devise_for :users
mount Myengine::Engine, at: "/myengine"
end
Was kann ich tun, um sie öffentlich zugänglich zu machen mypublic_method
(Hersteller / Engines / myengine / app / controller / myengine / mycontroller_controller.rb) verwenden authenticate :user
?
p.s. die gleiche Frage auf andere Weise Wie kann ich vermeiden, dass Devise eine Authentifizierung innerhalb einer Engine erfordert?
- Rubin 2.2.3p173
- Schienen 4.2.5
- Erarbeiten 3.5.3
Vielen Dank.
Antworten:
0 für die Antwort № 1Ich habe das Problem gelöst, das war einfach. Jetzt mache ich die Authentifizierung in meinem Engine Application Controller, nicht über die Routen auf meinem Main Application Controller.
module Myengine
class ApplicationController < ActionController::Base
before_action :authenticate_user!
end
end
Ich habe auch entfernt authenticate :user
in meiner config / routes.rb (Hauptanwendung)
mount Myengine::Engine, at: "/myengine"
Auf diese Weise kann ich den folgenden Code in jeder Steuerung verwenden
before_action :authenticate_user!, except: [:mypublic_method]