根据组成员资格使用 Flask-LDAP3-Login 进行身份验证

2023-12-20

我是 Flask 新手,正在尝试 Flask-LDAP3-Login。

我已按照此处的文档进行操作,并且它可以正常工作,这非常棒:https://flask-ldap3-login.readthedocs.io/en/latest/index.html https://flask-ldap3-login.readthedocs.io/en/latest/index.html

我如何根据用户是否是特定组的成员来验证用户的身份?我看到文档提到了组过滤,但我不确定如何将它们放在一起。


如果有人好奇,我自己解决了这个问题,执行以下操作:

首先,我使用此处的步骤将flask-ldap3-login 与 Flask-SQLAlchemy 集成 -https://github.com/nickw444/flask-ldap3-login/issues/26 https://github.com/nickw444/flask-ldap3-login/issues/26

我的保存用户方法现在如下所示:

@ldap_manager.save_user
def save_user(dn, username, data, memberships):
    id=int(data.get("uidNumber"))
    if 'group-goes-here' in data.get("memberOf"):
        user=User.query.filter_by(id=id).first()
        if not user:
            user=User(
                id=int(id),
                dn=dn,
                username=username,
                email=data['mail'],
                firstname=data['givenName'],
                lastname=data['sn']
            )
            db.session.add(user)
            db.session.commit()

        return user

因此,基本上只要用户输入有效的 LDAP 凭据,它就会转到 AD 检索其组成员身份,并且它是一个简单的 if 'group-goes-here' in data.get("memberOf"): 确定是否将用户保存在我的 User 模型中并将其返回给处理程序。

@auth.route('/login', methods=['GET', 'POST'])
def login():
    # Redirect users who are not logged in.
    form = LDAPLoginForm()
    if form.validate_on_submit():
        if form.user:
            login_user(form.user)
        else:
            flash('Login Failed', 'warning')
            return redirect(url_for('auth.login'))
        return redirect(url_for('main.home'))

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据组成员资格使用 Flask-LDAP3-Login 进行身份验证 的相关文章

  • 如何在 Matplotlib 饼图周围绘制箭头以将每个标签指向圆圈中各自的部分?

    我一直在用 Matplotlib 绘制一些图表 我有一个饼图 想要在图表周围绘制箭头 使每个标签都指向图表 我有一个例子 这是我当前的代码 import matplotlib pyplot as plt plt rcParams font
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • 多输出堆叠回归器

    一次性问题 我正在尝试构建一个多输入堆叠回归器 添加到 sklearn 0 22 据我了解 我必须结合StackingRegressor and MultiOutputRegressor 经过多次尝试 这似乎是正确的顺序 import nu
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • 为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件?

    当我使用内置的简单服务器时 一切正常 管理界面很漂亮 python manage py runserver 但是 当我尝试使用 wsgi 服务器为我的应用程序提供服务时django core handlers wsgi WSGIHandle
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 使用 Python Oauthlib 通过服务帐户验证 Google API

    我不想使用适用于 Python 的 Google API 客户端库 但仍想使用 Python 访问 Google APIOauthlib https github com idan oauthlib 创建服务帐户后谷歌开发者控制台 http
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 制作一份 Python 文档的 PDF 文件

    Python 官方网站提供 PDF 文档下载 但它们是按章节分隔的 我下载了源代码并构建了 PDF 文档 这些文档也是单独的 PDF 我怎么能够从源代码中的 Makefile 构建一个 PDF 文件 我认为这样阅读起来会更方便 如果连接单独
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • 为什么 '\x' 在 Python 中无效?

    我正在尝试使用 字符 使用 a b c 只是为了自己枚举Python将哪些字符解释为控制字符以及解释为什么 这是我发现的 a BELL b BACKSPACE f FORMFEED n LINEFEED r RETURN t TAB v V
  • Visual Studio 代码组织导入功能

    在 Visual Studio Code 1 23 版本中 添加了 组织导入 功能 这是一个非常有用的功能 因为它本身可以处理导入 但我希望能够对其进行配置 我想知道此功能是否可用的功能有 是否可以配置导入的排序顺序 我想在本地导入之前配置
  • Log4Net 不记录或出错

    我一直在尝试在我的 ASP NET Web 应用程序中获取 log4net 日志记录 但没有成功或任何明显的错误 我尝试使用具有以下配置的 ADONetAppender 附加程序
  • OSError:[Errno 24]打开的文件太多 - OS Mojave

    因此 我正在编写一个脚本来获取某个数据集 使用不同的随机种子对其进行 100 次采样 完成所有这些数据集 然后获取平均误差 但是 每当我尝试运行该脚本时 都会出现错误 OSError Errno 24 Too much open files
  • Drupal 通过代码在投票 API 中创建投票

    我正在编写一个自定义模块 我希望它做的部分工作是创建与节点关联的投票 我试图弄清楚如何从我的模块调用投票 API 我查看了文档 但它有点稀疏 这是我不久前编写的模块中的一个示例 while data db fetch object resu
  • EventTrigger 中的条件

    我可以检查事件触发器内的条件吗 我怎样才能只使用 XAML 来做类似的事情
  • 更改 Beaglebone Black 的 USB0 地址?

    我正在尝试更改 BeagleBone Black USB0 端口的静态 IP 地址 我知道这个线程之前已经打开过 更改 Beagle Bone Black USB0 的静态 IP https stackoverflow com questi
  • 在Stata中,如何组合不同宽度的箱线图?

    我正在尝试组合不同大小类别的多个箱线图 这是说明问题的示例 sysuse auto graph box mpg by rep78 rows 1 name g1 replace graph box mpg by foreign rows 1
  • python长度为k的0,1的所有可能组合[重复]

    这个问题在这里已经有答案了 我需要长度为 k 的 0 1 的所有可能组合 假设 k 2 我想要 0 0 0 1 1 0 1 1 我尝试过不同的功能itertools但我没有找到我想要的 gt gt gt list itertools com
  • 使用 Runtime.exec 从 Java 应用程序启动 JVM 进程?

    我希望能够从现有的 java 应用程序启动 Java 服务器进程并监视 stdoutput 和 stderror 并将该输出重定向到文件 是使用 Runtime exec 并将应用程序视为任何其他操作系统进程的最佳方法 还是有更适合新 JV
  • docker 中没有暴露和发布端口的连接

    我有一些中间件在 Docker 容器中运行 当我运行这个中间件时在我的主机上一切正常 当我在docker装有所有必要物品的容器暴露和发布的端口 Dockerfile EXPOSE 5672 15672 1337 1338 5556 3000
  • 网站安全问题

    我正在创建一个使用 perl 脚本 PHP MySQL 数据库和 HTML 的网站 我主要关心的是确保任何人都无法访问任何可以让他们访问我的信息的东西 我的意思是是否有人可以获取我的 perl 脚本并查看我的数据库信息 我了解 sql 注入
  • 如果我已经安装了 Anaconda 发行版并且想要使用其他文本编辑器,我还需要安装 Python 吗?

    我对 Python 和一般编程不太熟悉 过去几个月一直在 Windows 10 上使用 Anaconda 发行版的 Spyder IDE 它非常简单且易于下载和使用 我可以在IDE 让我很容易开始学习Python 我现在对 Python 和
  • Blazor - 当子组件 onclick 事件发生时执行父组件的方法

    我需要它onclick子组件中发生的事件 执行ShowMessage父组件传递的方法message字符串作为参数 以下代码不起作用 儿童剃须刀
  • 删除 NaN“单元格”而不删除整个 ROW(Pandas、Python3)

    现在我有一个这样的DF Word Word2 Word3 Hello NaN NaN My My Name NaN Yellow Yellow Bee Yellow Bee Hive Golden Golden Gates NaN Yell
  • 简单的Java“服务提供者框架”?

    我指的是 服务提供商框架 如中讨论的 这似乎是处理我遇到的问题的正确方法 我需要在运行时实例化几个类之一 基于String选择哪个服务 以及Configuration对象 本质上是一个 XML 片段 但是我如何让各个服务提供商 例如一堆默认
  • 将字符串中的正则表达式转换为 ruby​​ 中的正则表达式对象

    我将正则表达式作为用户的输入 并将值与该正则表达式进行匹配 但是 我遇到的问题是我收到的输入是一个字符串 例如 abc def i 我无法将其转换为正则表达式对象 如果尝试的话Regexp new string 它转义了所有字符 所以我得到
  • POCO 的行为和持久性无知

    根据我的阅读 POCO 类应该是持久性无知的 并且不应该包含对存储库的引用 Q1 鉴于上述情况 我将如何填充 QuestionBlocks 集合 我读过 POCO 应该包含行为 这样你就不会以贫血模型结束 所以我有点困惑 如果没有坚持 应该
  • 获取用户权限列表

    我正在尝试获取用户拥有的所有权限 权限模型 public function roles return this gt belongsToMany App Models Role 好榜样 public function users retur
  • 根据组成员资格使用 Flask-LDAP3-Login 进行身份验证

    我是 Flask 新手 正在尝试 Flask LDAP3 Login 我已按照此处的文档进行操作 并且它可以正常工作 这非常棒 https flask ldap3 login readthedocs io en latest index h