/ / Wie beantragen Sie die Authentifizierung aller Routen von einer Mountable Engine mit Devise und machen Sie nur einige Engine-Routen bekannt? - Ruby-on-Rails-4, Authentifizierung, Entwicklung, Routen

Wie beantragt man die Authentifizierung aller Routen von einer Mountable Engine mit Devise und macht nur ein paar Engine-Routen öffentlich? - Ruby-on-Rails-4, Authentifizierung, Geräte, Routen

Wenn ich den folgenden Code in meine mainapp/config/routes.rbFü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.rbAlle 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 № 1

Ich 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]