密钥斗篷客户端角色属性数组



情况

我有一个密钥斗篷服务器(v12.0.2),它与一个具有某些角色的客户端一起运行。我可以向角色添加自定义属性并检索它们。没问题。但是角色总是返回一个数组。

输入键";foo";以及值"0";条";给我

"attributes": {
"foo": [
"bar"
]
}

我想要什么

我希望在数组中有多个条目。为了停留在前面的例子中;条";以及";baz";。

"attributes": {
"foo": [
"bar",
"baz"
]
}

我尝试过的

  • 只需用同一个键添加两个条目-这只会导致用第二个覆盖第一个条目。所以我得到
"attributes": {
"foo": [
"baz"
]
}
  • 在键("foo[0]"="bar"one_answers"foo[1]"="baz")中提供数组索引只是两个不同的键
"attributes": {
"foo[0]": [
"bar"
],
"foo[1]": [
"baz"
]
}
  • 用分号、空格或逗号分隔值
"attributes": {
"foo": [
"bar,baz"
]
}

(分别与"或"相同)

有没有任何方法可以做到这一点,或者我必须使用自定义的分隔符并在我的应用程序中分割字符串(这不是问题,但我认为将值作为数组会更好)

您可以使用##作为分隔符,例如:bar##baz。但是使用此分隔符不能保证数组的顺序,尽管将数据保存为bar##baz,但数组可能会返回为foo[0]= "baz"foo[1] as="bar"

如果顺序不重要,您可以尝试使用此分隔符。

我遇到过类似的问题,并尝试了不同的步骤

  1. 协议映射器multivalued为True,属性值为"foo"##"bar",这起作用并输出为["foo","bar"]
  2. foo##bar"foo##bar"对我都不起作用,并在管理控制台评估用户时产生错误

现在无法将选项1与Rest API有效负载一起使用,因为它带有无效的json,所以请使用解决方法使其工作,关闭协议映射器中的multivalued选项

相同的其余API有效载荷看起来像

{
"attributes": {
"somekey": "["foo", "bar"]"
}
}

唯一的问题是当你检索用户信息时,它会看起来像这个

"somekey": [
"["foo", "bar"]"
]

使用javascript,您可以解析数组并执行操作

如果有人找到其他有用的解决方案,请分享

最新更新