python - Python ldap3 搜索何时创建
问题描述
我正在尝试搜索广告以查找在特定日期创建的用户,它为我提供了所有用户。我该如何过滤?
def creating_date(self, when_Created = "2020-03-11", attribute="whenCreated"):
"""
Queries for users created on specific date
"""
connection = self.conn
attributes = ["cn",
"displayName",
"mail",
"whenCreated"]
search_filter = f"(&(objectClass=person))"
connection.search(self.search_base, search_filter, attributes=attributes)
entry = self.conn.entries
try:
return entry
except (IndexError):
return "{}"
请指教。
解决方案
您必须构造 search_filter 以包含传递给方法的whenCreated
属性和值。when_Created
像这样的东西:
ldapFilter = ldap.filter.escape_filter_chars(when_Created)
search_filter = f"(&(objectClass=person)(whenCreated=" + ldapFilter + "))"
请注意,虽然您可以仅连接when_Created
值,但 usingescape_filter_chars()
可以防止代码注入。
编辑:
刚刚查看了我自己的一个脚本,它用于ldap.filter.filter_format()
构建过滤器:https://www.python-ldap.org/en/python-ldap-3.3.0/reference/ldap-filter.html#ldap.filter。过滤器格式
推荐阅读
- javascript - 如何从单独的组件重新加载/刷新组件
- python - 为什么线程会自动运行?
- php - PHP 查看所有会话中的所有会话数据
- postgresql - 如何在满足某些条件时复制某些行,然后在 PostgreSQL 中更新其某些列值?
- express - 快速错误处理在 Nuxt.js 服务器中间件中不起作用
- sql-server - SQL 查询获取数据而不会丢失订单号
- installation - 带有 2 个 inf 文件的相机驱动程序的 WIX 安装程序
- sqlite - Xamarin sqlite 不能使用 struct 作为表数据类型
- android-studio - Android Studio 场景表单 2021
- azure-web-app-service - Azure 应用服务上未显示 Apache Airflow 日志流