设计:无法关闭require_no_authentication?

时间:2013-12-24 19:48:19

标签: ruby-on-rails authentication devise before-filter

当我尝试限制注册访问时,似乎不可能。我试过了

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

1 个答案:

答案 0 :(得分:0)

所以你想要change after sign-out path

如果您尚未设置根目录,那么

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