【发布时间】:2013-12-24 19:48:18
【问题描述】:
当我尝试限制注册访问时,这似乎是不可能的。我试过了
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
这将删除跳过每个设计控制器身份验证的硬编码检查。代码来自lib/devise/controllers/helpers.rb。
【问题讨论】:
-
您设计了
Account或User型号? -
Account 是我放置设计内容的模型。注册、登录等工作正常,我只是无法按我的意愿限制访问。
-
当您说“尝试限制访问”时,您到底想达到什么目的?什么是“不起作用”任何控制台错误或意外行为?
-
我正在努力实现只有注册帐户的用户才能创建/注册新帐户。从我的角度来看,这应该是可能的。不起作用意味着意外行为:当我在退出时尝试访问 /accounts/sign_up 时,它确实有效,但我应该被重定向到 sign_in。
-
不错的解决方法谢谢 :)
标签: ruby-on-rails authentication devise before-filter