我有一个正在运行的Rails应用程序,使用ActiveAdmin及其模型来使用户自容。现在,我有兴趣转向ActiveDirectory身份验证,以便我的用户可以与域的用户进行验证。
我一直在尝试adauth,它看起来像一个很棒的gem,但是当尝试将这个gem与ActiveAdmin身份验证“混合”时,我有点迷路。我很确定我不是第一个这样做的人,所以我们将不胜感激。
谢谢!
最佳答案
我终于能够设法将AD集成到ActiveAdmin中。
如果有人感兴趣,这就是我所做的:
c.domain = "example.com"
c.server = "IP address of your domain controller"
c.base = "dc=example, dc=com"
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
这将创建迁移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
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
# config.authentication_method = :authenticate_admin_user!
config.authentication_method = :authenticate_user!
#config.current_user_method = :current_admin_user
config.current_user_method = :current_user
如果任何时候我们想切换回ActiveAdmin,我们只需要撤消上一次更改
关于ruby-on-rails-3 - 集成ActiveAdmin和adauth,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10959157/