覆盖活动的管理会话控制器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了覆盖活动的管理会话控制器相关的知识,希望对你有一定的参考价值。
我需要为活动管理员添加两个因素身份验证。每当管理员尝试登录时,我都需要在提供访问权限之前验证它们。验证可以通过向电子邮件或移动设备发送OTP来完成。因此,我需要过度使用Sessions控制器进行活动管理设备,以便我可以为其添加功能。我找到了一个解决方案,说我们可以在initializers文件夹中执行此操作。我骑过创造方法,它的工作正常。
#配置/初始化/ active_admin_devise_sessions_controller.rb
class ActiveAdmin::Devise::SessionsController
include ::ActiveAdmin::Devise::Controller
def create
if params[:admin_user].present?
email = params[:admin_user][:email]
password = params[:admin_user][:password]
admin_user = AdminUser.find_by_email(email)
if admin_user.present? && admin_user.valid_password?(password)
@admin_user = admin_user
redirect_to verification_method_path
end
else
flash[:error] = "No User Found"
redirect_to :back
end
end
def verification_method
end
end
现在我的问题是我想添加几个方法,所以我可以为登录验证过程渲染一些视图。而且我无法在会话控制器中为活动管理员添加任何自定义路由,因此我可以调用它并根据需要使用。
我的主动管理路线
devise_for :admin_users,ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
我的自定义GET路由以呈现第二个表单以进行登录验证
#active admin会话控制器验证路由
get '/admin/verification_method' => 'active_admin/devise/sessions#verification_method', via: :get, as: "verification_method"
我没有发现任何与我的问题类似的东西。请指导我如何做到这一点。
答案
在active_admin资源中,这将创建操作及其路由:
ActiveAdmin.register ResourceName do
member_action :action_name, method: :post do
# action code
end
end
因此,您可以将自定义操作放在此处,并且ActiveAdmin会自动创建其路由
UPDATE
另一种方法是在routes.rb
中手动创建您需要的路线,如下所示:
match "/admin/something" => 'admin/controller_name#action_name', via: :get, as: "something"
以上是关于覆盖活动的管理会话控制器的主要内容,如果未能解决你的问题,请参考以下文章