gpt4 book ai didi

go - 如何使用gopkg.in/ldap.v3 ldap.NewAddRequest函数添加多个objectClass属性?

转载 作者:行者123 更新时间:2023-12-01 22:26:17 25 4
gpt4 key购买 nike

在我的应用程序中,我将默认配置参数保留在toml配置文件中。在配置文件中,我存储:
LdapUserDefaultObjectClass = '"inetOrgPerson","extensibleObject","posixAccount"'
但是,当我使用下面的代码所示的变量时,用户添加事务失败并显示:
RESULT tag=105 err=21 text=objectClass: value #0 invalid per syntax
从视觉上看,从toml文件传递的参数和键入的字符串相同。是否有要求对objectClass对象进行硬编码?在我看到的几个示例中,没有一个为objectClass使用变量,但为其他属性使用了变量。

无法添加用户的代码(无效)

userAdd := ldap.NewAddRequest("uid=tester007@example,ou=users,dc=example", nil)
userAdd.Attribute("objectClass", []string{ldapClient.LDAP.LdapUserDefaultObjectClas})
// bunch of other attributes that satisfy the object classes below this line
// ...
ldapConn.Add(userAdd)

返回错误:
RESULT tag=105 err=21 text=objectClass: value #0 invalid per syntax

成功添加用户的代码(Works!)
userAdd := ldap.NewAddRequest("uid=tester007@example,ou=users,dc=example", nil)
userAdd.Attribute("objectClass", []string {"inetOrgPerson","extensibleObject","posixAccount"})
/// bunch of other attributes that satisfy the object classes below this line
...
ldapConn.Add(userAdd)

经过进一步调试,我发现利用TOML变量的代码的解析方式与对文字进行硬编码时的解析方式不同。我不完全了解这里发生的事情以及为什么要对其进行更改/翻译和逃脱。我确实知道这不是TOML问题,但是当将字符串提供给userAdd.Attribute(“objectClass”,[] string {})时发生了一些事情。

我是Go的新手,我感觉这是个傻瓜!类型问题,但我尝试以多种方式转换和引用事物,结果始终是错误的...

使用TOML变量时调试失败的输出
Add Request: (Application, Constructed, 0x08) Len=368 "<nil>"
DN: (Universal, Primitive, Octet String) Len=39 "uid=tester007@example,ou=users,dc=example"
Attributes: (Universal, Constructed, Sequence and Sequence of) Len=323 "<nil>"
Attribute: (Universal, Constructed, Sequence and Sequence of) Len=66 "<nil>"
Type: (Universal, Primitive, Octet String) Len=11 "objectClass"
AttributeValue: (Universal, Constructed, Set and Set OF) Len=51 "<nil>"
Vals: (Universal, Primitive, Octet String) Len=49 "\"inetOrgPerson\",\"extensibleObject\",\"posixAccount\""

调试输出显示成功添加。这是对值进行硬编码的时候。
Add Request: (Application, Constructed, 0x08) Len=364 "<nil>"
DN: (Universal, Primitive, Octet String) Len=39 "uid=tester007@example,ou=users,dc=example"
Attributes: (Universal, Constructed, Sequence and Sequence of) Len=319 "<nil>"
Attribute: (Universal, Constructed, Sequence and Sequence of) Len=62 "<nil>"
Type: (Universal, Primitive, Octet String) Len=11 "objectClass"
AttributeValue: (Universal, Constructed, Set and Set OF) Len=47 "<nil>"
Vals: (Universal, Primitive, Octet String) Len=13 "inetOrgPerson"
Vals: (Universal, Primitive, Octet String) Len=16 "extensibleObject"
Vals: (Universal, Primitive, Octet String) Len=12 "posixAccount"

最佳答案

我想我已经知道了(n00b)。

TOML定义很好。问题在于我如何尝试填充objectClass属性。我试图将string传递到[]string(字符串结构?)。我不明白的是,我可以将自己的[]string传递给该函数。

基本上我不了解[]string{}是否可以用我自己的[]string变量替换:

错误:
userAdd.Attribute("objectClass", []string{ldapClient.LDAP.LdapUserDefaultObjectClass})
正确:

  • 将ldapClient.LDAP.LdapUserDefaultObjectClass分配给objClass-很好,不需要
  • objClass := ldapClient.LDAP.LdapUserDefaultObjectClass
  • 将objClass拆分为 slice
  • userObjectClasses := (strings.Split(objClass, ","))
  • 使用userObjectClasses传递AttVals。
  • userAdd.Attribute("objectClass", userObjectClasses)
    调试输出:
     Add Request: (Application, Constructed, 0x08) Len=364 "<nil>"
    DN: (Universal, Primitive, Octet String) Len=39 "uid=tester007@example,ou=users,dc=example"
    Attributes: (Universal, Constructed, Sequence and Sequence of) Len=319 "<nil>"
    Attribute: (Universal, Constructed, Sequence and Sequence of) Len=62 "<nil>"
    Type: (Universal, Primitive, Octet String) Len=11 "objectClass"
    AttributeValue: (Universal, Constructed, Set and Set OF) Len=47 "<nil>"
    Vals: (Universal, Primitive, Octet String) Len=13 "inetOrgPerson"
    Vals: (Universal, Primitive, Octet String) Len=16 "extensibleObject"
    Vals: (Universal, Primitive, Octet String) Len=12 "posixAccount"

    我希望这可以帮助其他人学习Go和LDAP软件包。
  • 卫生保护程序:https://golang.org/pkg/strings/#Split
  • 有用:https://medium.com/golangspec/composite-literals-in-go-10dc62eec06a
  • 关于go - 如何使用gopkg.in/ldap.v3 ldap.NewAddRequest函数添加多个objectClass属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59803733/

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