gpt4 book ai didi

ruby - 将用户从 Active Directory 加载到 Rails 3.1 Active Record 数据库

转载 作者:数据小太阳 更新时间:2023-10-29 07:39:56 25 4
gpt4 key购买 nike

2011 年 11 月 30 日更新我对发现错误的代码片段进行了一些更改。我现在可以肯定地成功进行身份验证,但在尝试 ldap.search 调用后出现此错误:

<OpenStruct code = 1, message="Operations Error">

在 Windows Server 2008 R2 上使用 Rails 3.1.0 和 ruby​​ 1.9.2

原始消息我是 Ruby、Rails 和编程的新手。我有一个应用程序必须对我们的 Active Directory 服务器进行身份验证,同时维护一个与 AD 分开的用户列表。

我正在尝试使用 net-ldap 建立连接、搜索 AD 并加载用户,但每次尝试运行时我都得到 0 个结果。

我已经根据我看到的示例将它放在一起,但是当我为我的公司定制它时,它似乎不起作用。欢迎提出任何想法/批评。

谢谢!

我已将其设置为我的用户类模型中的一个方法:

class User < ActiveRecord::Base
attr_accessible :username, :name, :email, :team, :office, :points_attributes
validates_presence_of :username, :name, :email
validates_uniqueness_of :username, :email
has_one :points
accepts_nested_attributes_for :points

def self.import_all
# initialization stuff. set bind_dn, bind_pass, ldap_host, base_dn and filter

ldap = Net::LDAP.new(:host => "dc.mycompany.com", :port => 389)
if ldap.bind(:method => :simple, :username => "username@mycompany.com", :password => "secret")
else
p ldap.get_operation_result
end

begin
# Build the list
filter = Net::LDAP::Filter.eq("displayName", "J*")
attrs = ["givenName", "sn", "physicalDeliveryOfficeName", "sAMAccountName"]
records = new_records = 0
ldap.search(:base => "DC=mycompany,DC=com", :attributes => attrs, :filter => filter, :return_result => false) do |entry|
name = entry.givenName.to_s.strip + " " + entry.sn.to_s.strip
username = entry.sAMAccountName.to_s.strip
email = entry.sAMAccountName.to_s.strip + "@mycompany.com"
office = entry.physicalDeliveryOfficeName.to_s.strip
user = User.find_or_initialize_by_username :name => name, :username => username, :email => email, :office => office
if user.new_record?
user.save
Points.find_or_create_by_user_id(user.id)
new_records = new_records + 1
else
user.touch
end
records = records + 1
end
p ldap.get_operation_result

logger.info( "LDAP Import Complete: " + Time.now.to_s )
logger.info( "Total Records Processed: " + records.to_s )
logger.info( "New Records: " + new_records.to_s )

end

end
end

最佳答案

事实证明,我收到的错误是由于我正在搜索的某些属性在我正在查看的树下的所有用户中并不存在。

感谢所有看过此内容的人,但我相信我可以继续解决如何处理没有这些属性的条目。

关于ruby - 将用户从 Active Directory 加载到 Rails 3.1 Active Record 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319414/

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