0

Я хочу использовать методы для перенаправления пользователя на определенную страницу, я бы поставил эти два метода и before_action :authenticate_user! все в контроллер приложения, однако при запуске метода before_action он будет вызываться для всех действий, которые будут перенаправить мое приложение на неправильные маршруты. Должен ли я использовать before_action :authenticate_user!, except: [:after_sign_in_path_for, :after_inactive_sign_up_path_for], чтобы пропустить аутентификацию по этим двум методам?Как использовать before_action с методами after_sign_in_path_for и after_inactive_sign_up_path_for?

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 
    before_action :authenticate! 


    def after_sign_in_path_for(user) 
     if user && user.is_a?(Vendor) 
      return edit_vendor_registration_path 
      elsif user && user.is_a?(Customer) 
      return dashboard_path 
     end 
    end 

    def after_sign_out_path_for(user) 
     if user && user.is_a?(Vendor) 
      return root_path 
      elsif user && user.is_a?(Customer) 
      return root_path 
     end 
    end 


    def authenticate! 
     if @current_user == current_customer 
      :authenticate_customer! 
      elsif @current_user == current_vendor 
      :authenticate_vendor! 
     end 
    end 
end 

Я столкнулся с этой ошибкой Filter chain halted as :require_no_authentication rendered or redirected, я считаю, что программа как-то создал бесконечный цикл, который держать перенаправляется на dashboard_path.

+0

Это означает, что метод before_action не должен влиять на эти два метода? но, я получаю перенаправление к неправильным маршрутам при использовании до действия и два метода в контроллере приложения – KhoaVo

ответ

0

Я думаю, что вы смешиваете несколько вещей.

before_action :authenticate_user! используется для каждого действия контроллера, в котором вы хотите, чтобы пользователь был аутентифицирован, чтобы продолжить его запрос.

например. after_sign_in_path_for - это метод конструктивного контроллера, который можно переопределить следующим образом: https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-up-%28registration%29

+0

Я знаю это, но кажется, что before_action влияет на перенаправление метода after_sign_in_path_for, так как мне это исправить? – KhoaVo

+0

, пожалуйста, напишите какой-нибудь код, иначе это действительно сложно. – Chris

+0

Я отправил код вместе с сообщением об ошибке im get – KhoaVo