如何使用Devise要求对所有页面进行身份验证?

hol*_*kin 4 authentication ruby-on-rails devise

我已经开始使用Devise gem并且现在尝试实现代码,因此我的Web应用程序将需要登录我的应用程序上的每个页面.我已根据此指令将以下代码添加到routes.rb:

authenticated :user do
  root to: 'home#index', as: :authenticated_root
end
root to: redirect('/users/sign_in')
Run Code Online (Sandbox Code Playgroud)

但它不起作用.当我转到任何页面时 - 它只是打开该页面,而不是将我转发到sign_in页面.有谁可以澄清我错过了什么?任何帮助,将不胜感激.

Dmi*_*sky 6

将其添加到您的app控制器

class ApplicationController < ActionController::Base
  ...
  before_action :authenticate_user!
end
Run Code Online (Sandbox Code Playgroud)

  • 正确的。如果您有任何继承自“ApplicationController”的子控制器,并且需要具有跳过/绕过该身份验证的操作(即它们是公共页面),您可以将其添加到其控制器的顶部:“skip_before_action :authenticate_user!” ,仅:[:索引]` (2认同)