Devise: нельзя отключить require_no_authentication?

Когда я пытаюсь ограничить доступ к регистрации, это кажется невозможным. Я попытался

class RegistrationsController < Devise::RegistrationsController
  skip_before_filter :require_no_authentication
end

в app/registrations_controller.rb и изменил маршруты на

devise_for :accounts, :controllers => { :registrations => "registrations" }

Это не работает. Любые предложения, почему и что я могу сделать / где я должен искать, будут оценены.

РЕДАКТИРОВАТЬ:

Не работает означает: когда я пытаюсь получить доступ к /accounts/sign_up при выходе из системы, это действительно работает, но я должен быть перенаправлен на sign_in.

ВРЕМЕННОЕ РЕШЕНИЕ:

class RegistrationsController < Devise::RegistrationsController
  skip_before_filter :require_no_authentication

  private

  def authenticate_account!(opts={})
    opts[:scope] = :account
    warden.authenticate!(opts) # if !devise_controller? || opts.delete(:force)
  end
end

Это удаляет жестко закодированную проверку, которая пропускает аутентификацию для КАЖДОГО контроллера Devise. Код происходит от lib/devise/controllers/helpers.rb.


person user573335    schedule 24.12.2013    source источник
comment
У вас есть устройство Account или User модели?   -  person swapab    schedule 25.12.2013
comment
Аккаунт - это модель, в которую я помещаю вещи разработки. Регистрация, вход и т. д. работают нормально, я просто не могу ограничить доступ так, как хочу.   -  person user573335    schedule 25.12.2013
comment
Когда вы говорите попытаться ограничить доступ, чего именно вы пытаетесь достичь? А что это не работает какая-то консольная ошибка или непредвиденное поведение?   -  person swapab    schedule 25.12.2013
comment
Я пытаюсь добиться того, чтобы только пользователи с зарегистрированными учетными записями могли создавать/регистрировать новые учетные записи. Это должно быть возможно с моей точки зрения. Не работает означает неожиданное поведение: когда я пытаюсь получить доступ к /accounts/sign_up при выходе из системы, это действительно работает, но я должен быть перенаправлен на sign_in.   -  person user573335    schedule 25.12.2013
comment
хороший РЕШЕНИЕ спасибо :)   -  person Suborx    schedule 13.10.2014


Ответы (1)


Итак, вы хотите изменить путь после выхода.

Если вы не установили свой корень для входа в систему, тогда

class ApplicationController < ActionController::Base
  private

  # Overwriting the sign_out redirect path method
  def after_sign_out_path_for(resource_or_scope)
    new_user_session_path
  end
end
person swapab    schedule 24.12.2013
comment
Я не понимаю, почему я должен переопределять его, если я хочу его пропустить? - person user573335; 25.12.2013
comment
Извините, но это не то, чем я хочу заниматься. Я не хочу менять место, куда меня перенаправляют после выхода из системы, я хочу, чтобы пользователь, который не вошел в систему, не мог получить доступ к странице регистрации. - person user573335; 25.12.2013