ldap - LDAP 查询不在子查询中
问题描述
我正在尝试的是仅获取活动用户并排除非活动用户(唯一的区别是非活动用户具有 的值accountExpires
)。
所以我有过期的用户查询是:
(&(objectClass=user)(!accountExpires=9223372036854775807)(!accountExpires=0))
我现在需要的是如何添加查询的第一部分:
(&(objectClass=user)(givenName=*" & userVariable & "*))
所以查询应该是这样的:
(&(objectClass=user)(givenName=*" & userVariable & "*)) NOT IN (&(objectClass=user)(!accountExpires=9223372036854775807)(!accountExpires=0))
我知道 LDAP 中没有“不在”表达式,但我怎样才能得到这个查询?如果我否定过期用户的查询,它就不起作用。
希望有人找到了解决方案。
谢谢!
解决方案
如果我否定过期用户的查询,它就不起作用。
我认为这是问题所在:您必须根据布尔代数正确分配否定。
完整的过滤器变为:
(&(objectClass=user)(givenName=*" & userVariable & "*)(|(!accountExpires=*)(accountExpires=9223372036854775807)(accountExpires=0)))
查询说明
如果我们有一个布尔表达式p ∧<em>q,则正确的否定是 ¬ p ∨¬<em>q。因此,要排除过期用户并仅包含未过期用户,我们需要过滤器:
(|(!accountExpires=*)(accountExpires=9223372036854775807)(accountExpires=0))
这将包括没有价值的用户accountExpires
(参见属性存在条款)或无限期的用户。
我只是将 the 转换&
为 an|
并颠倒了否定,但我认为包含 of!accountExpires=*
也是必要的。
推荐阅读
- javascript - 如何在 html 上进行多选?
- android - Asynctask 不更新 Fragment 中的 TextView (Android)
- xamarin - 在 xamarin 跨平台项目中添加 CoreBluetooth 程序集
- java - 在 Spring Boot 应用程序中配置多个 rabbitmq
- c - 我想用c程序解决这个查询
- c++ - C++ 11 中的锁能保证访问数据的新鲜度吗?
- python - 使用 numpy 的问题
- bash - 通过 ssh 管道 stdout 和 stderr
- javascript - 使用 Ionic 将视频上传到服务器
- c++ - 如何使用 C++ 为我的容器 Deque 设置最大大小?