Ruby on rails 在操作前使用设计:验证用户!不';我什么也不做
我试图要求登录Rails4网站上的所有页面。 在ApplicationController中,我在\u操作:验证\u用户之前添加了Ruby on rails 在操作前使用设计:验证用户!不';我什么也不做,ruby-on-rails,devise,Ruby On Rails,Devise,我试图要求登录Rails4网站上的所有页面。 在ApplicationController中,我在\u操作:验证\u用户之前添加了,但它根本不起任何作用。我尝试在\u操作:验证\u用户之前添加相同的到另一个控制器,它工作正常 我是否需要对ApplicationController执行其他操作,以使所有操作(注册/登录除外)都需要登录?以下是我们使用的实际代码: #app/controllers/application_controller.rb Class ApplicationControll
代码>,但它根本不起任何作用。我尝试在\u操作:验证\u用户之前添加相同的代码>到另一个控制器,它工作正常
我是否需要对ApplicationController执行其他操作,以使所有操作(注册/登录除外)都需要登录?以下是我们使用的实际代码:
#app/controllers/application_controller.rb
Class ApplicationController < ActionController::Base
#Actions
before_action :authenticate_user! #-> routes to the login / signup if not authenticated
end
--
您在某种程度上“跳过”了操作前的
回调
如果您在任何位置使用skip\u-before\u-action
,则需要将其删除。这可能会导致您的authenticate\u用户出现问题代码>方法。为了解决这个问题,我首先在没有任何skip\u操作之前进行测试callbacks,然后看看是什么让它正常工作
还有一点需要注意的是,登录/注册
并不重要。它们都继承自设计控制器;它们会按要求运行 2019年更新
在routes.rb
文件中,您可能只提到了authenticated\u用户路径,如下所示
authenticated :user do
root to: 'home#index', as: :root_app
end
您应该提及未经验证的\u用户路径以使其工作,或者只提及根路径而不提及未经验证的\u用户或已验证的\u用户,只要您的其他控制器确实从ApplicationController继承……我刚刚发现我正在使用ActionController::Base,而不仅仅是从ApplicationController继承。我回去写答案,但你走在我前面:)哈哈,谢谢你的投票和接受!现在可以用了吗?
authenticated :user do
root to: 'home#index', as: :root_app
end