Pundit :: AuthorizationNotPerformedError в PagesController # home - PullRequest
0 голосов
/ 22 января 2019

Я создаю веб-сайт, где пользователь может увидеть несколько стихов или написать свою собственную.Я использую Devise и Pundit для аутентификации и авторизации.

Когда пользователь переходит на главную ссылку (http://0.0.0.0:3000/),), я хочу, чтобы он мог видеть страницу, даже если он НЕ вошел в систему.Страница HOME - это просто HTML-страница с кнопками, которые при нажатии перенаправляют на все стихи (контроллер поэзии).

Однако у меня возникает следующая ошибка:

Pundit::AuthorizationNotPerformedError in PagesController#home

application_controller.rb

class ApplicationController < ActionController::Base
  include Pundit

  protect_from_forgery with: :exception
  before_action :authenticate_user!

  after_action :verify_authorized, :except => :index, unless: :devise_controller?
  after_action :verify_policy_scoped, :only => :index, unless: :devise_controller?

  rescue_from Pundit::NotAuthorizedError, with: :user_not_authorized

  private

  def user_not_authorized
    flash[:alert] = "Non sei autorizzato a eseguire questa azione"
    redirect_to(root_path)
  end

end

pages_controllers.rb

class PagesController < ApplicationController
  include Pundit

  skip_before_action :authenticate_user!, only: [:home]
  # skip_after_action :verify_authorized, except: [:home]
  # after_action :verify_authorized, except: [:home]
  # before_action :authenticate_user!, except: [:home,]


  def home
  end
end

Я пытался следовать этому руководству: Pundit :: AuthorizationNotPerformedError Но я продолжаю получать ту же ошибку.

Я НЕ создал pages_policy.rb, но я не думаю, что это проблема.

1 Ответ

0 голосов
/ 23 января 2019

Решил это. Поскольку PagesController наследуется от ApplicationController, а последний содержит before_action :authenticate_user!, я должен написать следующее в PagesController:

class PagesController < ApplicationController
  include Pundit
    skip_after_action :verify_authorized, only: [:home]

    skip_before_action :authenticate_user!, only: [:home]

  def home
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...