覆盖活动的管理会话控制器

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"

以上是关于覆盖活动的管理会话控制器的主要内容,如果未能解决你的问题,请参考以下文章

电脑任务管理器为啥老是弹出用户状态活动的会话Console?

覆盖片段中的后退按钮

Android 片段和活动

Android:使用支持片段管理器时复制片段

如何在片段活动中获取用户名?

片段 onActivityResult 方法执行调用活动 onActivityResult