首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

URI::LDAP

Parent:URI::Generic

LDAP URI SCHEMA(在RFC2255中描述)

常量

COMPONENT

URI::LDAP的可用组件的数组

DEFAULT_PORT

URI::LDAP的默认端口为389

SCOPE

可用于起点的范围。

  • SCOPE_BASE - the Base DN
  • SCOPE_ONE - 基本DN下的一个级别,不包括基本DN和

不包括此项下的任何条目。

  • SCOPE_SUB - 子级,所有级别的所有条目

公共类别方法

build(args) Show source

描述

从组件创建一个新的URI::LDAP对象,并进行语法检查。

接受的组件是主机,端口,dn,属性,范围,过滤器和扩展。

这些组件应该以数组的形式提供,或者以组件名称前面用冒号形成的哈希形式提供。

如果使用数组,则必须按照host,port,dn,attributes,scope,filter,extensions的顺序传递组件。

示例:

代码语言:javascript
复制
newuri = URI::LDAP.build({:host => 'ldap.example.com',
  :dn> => '/dc=example'})

newuri = URI::LDAP.build(["ldap.example.com", nil,
  "/dc=example;dc=com", "query", nil, nil, nil])

调用超类方法URI::Generic.build

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 73
def self.build(args)
  tmp = Util::make_components_hash(self, args)

  if tmp[:dn]
    tmp[:path] = tmp[:dn]
  end

  query = []
  [:extensions, :filter, :scope, :attributes].collect do |x|
    next if !tmp[x] && query.size == 0
    query.unshift(tmp[x])
  end

  tmp[:query] = query.join('?')

  return super(tmp)
end

new(*arg) Show source

描述

按照RFC 2396从通用URI组件创建一个新的URI::LDAP对象。不执行特定于LDAP的语法检查。

参数是schemeuserinfohostportregistrypathopaquequeryfragment按此顺序。

示例:

代码语言:javascript
复制
uri = URI::LDAP.new("ldap", nil, "ldap.example.com", nil,
  "/dc=example;dc=com", "query", nil, nil, nil, nil)

另见URI::Generic.new

调用超类方法URI::Generic.new

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 108
def initialize(*arg)
  super(*arg)

  if @fragment
    raise InvalidURIError, 'bad LDAP URL'
  end

  parse_dn
  parse_query
end

公共实例方法

attributes() Show source

返回属性。

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 177
def attributes
  @attributes
end

attributes=(val) Show source

setter属性 val

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 190
def attributes=(val)
  set_attributes(val)
  val
end

dn() Show source

返回dn。

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 158
def dn
  @dn
end

dn=(val) Show source

为dn设置 val

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 171
def dn=(val)
  set_dn(val)
  val
end

extensions() Show source

返回扩展名。

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 234
def extensions
  @extensions
end

extensions=(val) Show source

setter用于扩展 val

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 247
def extensions=(val)
  set_extensions(val)
  val
end

filter() Show source

返回过滤器。

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 215
def filter
  @filter
end

filter=(val) Show source

设置为过滤器 val

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 228
def filter=(val)
  set_filter(val)
  val
end

hierarchical?() Show source

检查URI是否有路径对于URI::LDAP,这将返回 false

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 254
def hierarchical?
  false
end

scope() Show source

返回范围。

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 196
def scope
  @scope
end

scope=(val) Show source

范围val的setter

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 209
def scope=(val)
  set_scope(val)
  val
end

受保护的实例方法

set_attributes(val) Show source

私人二传手属性 val

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 182
def set_attributes(val)
  @attributes = val
  build_path_query
  @attributes
end

set_dn(val) Show source

dnval私人二传手

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 163
def set_dn(val)
  @dn = val
  build_path_query
  @dn
end

set_extensions(val) Show source

私人二传手 val

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 239
def set_extensions(val)
  @extensions = val
  build_path_query
  @extensions
end

set_filter(val) Show source

私人二传手过滤器 val

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 220
def set_filter(val)
  @filter = val
  build_path_query
  @filter
end

set_scope(val) Show source

范围私人二传手 val

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 201
def set_scope(val)
  @scope = val
  build_path_query
  @scope
end

私有实例方法

build_path_query() Show source

私有方法组装queryattributesscopefilterextensions

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 145
def build_path_query
  @path = '/' + @dn

  query = []
  [@extensions, @filter, @scope, @attributes].each do |x|
    next if !x && query.size == 0
    query.unshift(x)
  end
  @query = query.join('?')
end

parse_dn() Show source

dn使用path组件属性进行清理的私有方法

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 120
def parse_dn
  @dn = @path[1..-1]
end

parse_query() Show source

私有方法清理attributesscopefilterextensions,从使用该query部件属性

代码语言:javascript
复制
# File lib/uri/ldap.rb, line 127
def parse_query
  @attributes = nil
  @scope      = nil
  @filter     = nil
  @extensions = nil

  if @query
    attrs, scope, filter, extensions = @query.split('?')

    @attributes = attrs if attrs && attrs.size > 0
    @scope      = scope if scope && scope.size > 0
    @filter     = filter if filter && filter.size > 0
    @extensions = extensions if extensions && extensions.size > 0
  end
end

扫码关注腾讯云开发者

领取腾讯云代金券