gpt4 book ai didi

ruby-on-rails-3 - 集成 ActiveAdmin 和 adauth

转载 作者:行者123 更新时间:2023-12-01 11:00:50 25 4
gpt4 key购买 nike

我有一个正在运行的 Rails 应用程序,使用 ActiveAdmin 及其模型来验证用户。现在我有兴趣转向 ActiveDirectory 身份验证,这样我的用户就可以通过域的用户进行验证。我一直在尝试 adauth,它看起来像一个很棒的 gem,但是当我试图将这个 gem 与我的 ActiveAdmin 身份验证“混合”时,我有点不知所措。我很确定我不是第一个这样做的人,所以我们将不胜感激。谢谢!

最佳答案

我终于能够在 ActiveAdmin 中集成 AD。

这是我所做的,以防有人感兴趣:

  • 在您的 gems 中包含 gem 'adauth'

  • 执行捆绑安装

  • 执行 rails g adauth:config

  • 为您的 AD 连接配置 config/initializers/adauth.rb。例如,如果您的域是 example.com,则必须包括:

    c.domain = "example.com" 
    c.server = "IP address of your domain controller"
    c.base = "dc=example, dc=com"
  • 执行 rails g adauth:sessions

  • 修改您的 application_controller.rb。我的是:

    class ApplicationController< ActionController::Base
    protect_from_forgery
    helper_method :current_user
    def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
    end
    def authenticate_user!
    if current_user.nil?
    redirect_to '/sessions/new', :error => "Invalid Login"
    end
    end
    end
  • 执行 rails g adauth:user_model user install_adauth。这会创建迁移 install_adauth,但由于某种原因它是空的。我必须自己填写:

    class InstallAdauth < ActiveRecord::Migration
    def up
    create_table :users do |u|
    u.string 'login'
    u.text 'group_strings'
    u.string 'name'
    u.string 'ou_strings'
    end
    end
    def down
    drop_table :users
    end
    end
  • 执行 rake db:migrate

  • 修改您的 sessions_controller.rb。我的是:

    class SessionsController < ApplicationController
    def new
    redirect_to '/admin' if current_user
    end
    def create
    ldap_user = Adauth.authenticate(params[:username], params[:password])
    if ldap_user
    user = User.return_and_create_with_adauth(ldap_user)
    session[:user_id] = user.id
    redirect_to '/admin'
    else
    redirect_to '/sessions/new', :error => "Invalid Login"
    end
    end

    def destroy
    session[:user_id] = nil
    redirect_to '/sessions/new'
    end
    end
  • 到目前为止,通过 ActiveAdmin 的验证仍然有效。要切换到 ActiveDirectory,我们必须更改文件 initializers/active_admin.rb

    # config.authentication_method = :authenticate_admin_user!
    config.authentication_method = :authenticate_user!

    #config.current_user_method = :current_admin_user
    config.current_user_method = :current_user
  • 就我而言,我还需要重新启动 Apache。

如果我们想切换回 ActiveAdmin,我们只需要撤消最后的更改

关于ruby-on-rails-3 - 集成 ActiveAdmin 和 adauth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com