ActiveAdmin 跳过路由的身份验证
ActiveAdmin skip Authentication for a route
这是我的路线:
admin_admin_users GET /admin/admin_users(.:format) admin/admin_users#index
POST /admin/admin_users(.:format) admin/admin_users#create
new_admin_admin_user GET /admin/admin_users/new(.:format) admin/admin_users#new
edit_admin_admin_user GET /admin/admin_users/:id/edit(.:format) admin/admin_users#edit
admin_admin_user GET /admin/admin_users/:id(.:format) admin/admin_users#show
config/initializers/active_admin.rb
中的这一行
config.authentication_method = :authenticate_admin_user!
将在所有控制器操作的前过滤器中自动调用身份验证方法,以确保当前有一个登录的管理员用户。
那么我该如何破例才能转到
http://localhost:3000/admin/admin_users/new
要在未登录的情况下创建新管理员?
更新:
我将 skip_before_action 添加到我的控制器
ActiveAdmin.register AdminUser do
permit_params :email, :password, :password_confirmation, :first_name, :last_name, :phone_number
controller do
skip_before_action :authenticate_admin_user!, only: :new
end
...
end
它给我这个错误:
Before process_action callback :authenticate_admin_user! has not been defined
在您想要跳过身份验证的控制器中(我想是 AdminUsers)...
skip_before_action :authenticate_admin_user!, only [:new]
找到负责身份验证的回调,例如authenticate_admin_user.
添加 skip_before_filter :authenticate_admin_user 到控制器 do 块。
ActiveAdmin.register User, as: "User" do
controller do
skip_before_action :authenticate_admin_user!, only: :new
end
end
以上代码将跳过该特定控制器的回调。
authenticate_active_admin_user
授予您访问活动管理员身份验证用户的权限
controller do
skip_before_action :authenticate_active_admin_user, only: :new
end
https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/base_controller.rb#L38
行
skip_before_action :authenticate_active_admin_user
对我来说很好用。
实际上,当列出回调操作时,在列表中找到它。
通过调查 activeadmin gem 基本代码,发现:
before_action :authenticate_active_admin_user
在 lib/active_admin/base_controller.rb。那是为所有控制器添加的前置过滤器。
只有在定义的情况下才能跳过一个动作(定义不仅意味着定义了实际的方法,而且必须在堆栈中用before_action定义一个动作,即由前一个before_action).
ActiveAdmin conf 中的行
config.authentication_method = :authenticate_admin_user!
是关于调用的方法而不是动作的名称。
这是我的路线:
admin_admin_users GET /admin/admin_users(.:format) admin/admin_users#index
POST /admin/admin_users(.:format) admin/admin_users#create
new_admin_admin_user GET /admin/admin_users/new(.:format) admin/admin_users#new
edit_admin_admin_user GET /admin/admin_users/:id/edit(.:format) admin/admin_users#edit
admin_admin_user GET /admin/admin_users/:id(.:format) admin/admin_users#show
config/initializers/active_admin.rb
中的这一行config.authentication_method = :authenticate_admin_user!
将在所有控制器操作的前过滤器中自动调用身份验证方法,以确保当前有一个登录的管理员用户。 那么我该如何破例才能转到
http://localhost:3000/admin/admin_users/new
要在未登录的情况下创建新管理员?
更新: 我将 skip_before_action 添加到我的控制器
ActiveAdmin.register AdminUser do
permit_params :email, :password, :password_confirmation, :first_name, :last_name, :phone_number
controller do
skip_before_action :authenticate_admin_user!, only: :new
end
...
end
它给我这个错误:
Before process_action callback :authenticate_admin_user! has not been defined
在您想要跳过身份验证的控制器中(我想是 AdminUsers)...
skip_before_action :authenticate_admin_user!, only [:new]
找到负责身份验证的回调,例如authenticate_admin_user.
添加 skip_before_filter :authenticate_admin_user 到控制器 do 块。
ActiveAdmin.register User, as: "User" do controller do skip_before_action :authenticate_admin_user!, only: :new end end
以上代码将跳过该特定控制器的回调。
authenticate_active_admin_user
授予您访问活动管理员身份验证用户的权限
controller do
skip_before_action :authenticate_active_admin_user, only: :new
end
https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/base_controller.rb#L38
行
skip_before_action :authenticate_active_admin_user
对我来说很好用。
实际上,当列出回调操作时,在列表中找到它。
通过调查 activeadmin gem 基本代码,发现:
before_action :authenticate_active_admin_user
在 lib/active_admin/base_controller.rb。那是为所有控制器添加的前置过滤器。
只有在定义的情况下才能跳过一个动作(定义不仅意味着定义了实际的方法,而且必须在堆栈中用before_action定义一个动作,即由前一个before_action).
ActiveAdmin conf 中的行
config.authentication_method = :authenticate_admin_user!
是关于调用的方法而不是动作的名称。