根据组成员资格使用 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 进行身份验证 的相关文章

  • 当我有自定义身份验证模型时,如何登录 Django Rest 可浏览 API?

    我有一个自定义用户模型 如下所示account models py from django contrib auth modles import AbstractUser from django db models signals impo
  • 如何避免使用 python 处理空的标准输入?

    The sys stdin readline 返回之前等待 EOF 或新行 所以如果我有控制台输入 readline 等待用户输入 相反 我想打印帮助并在没有需要处理的情况下退出并显示错误 而不是等待用户输入 原因 我正在寻找一个Pytho
  • Python 切片对象和 __getitem__

    python 中是否有内部的东西来处理传递给的参数 getitem 不同 并自动转换start stop step构造成切片 这是我的意思的演示 class ExampleClass object def getitem self args
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • Virtualenv 在 OS X Yosemite 上失败并出现 OSError

    我最近更新到 OSX Yosemite 现在无法使用virtualenv pip 每当我执行 virtualenv env 它抛出一个 OSError Command Users administrator ux env bin pytho
  • 根据 MVC,哪种项目结构是正确的? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我注意到诸如flask通常有一个名为views容纳 app route def index return render template ind
  • Mypy 无法从文字列表推断项目的类型

    我有一个变量x和一个文字列表 例如 0 1 2 我想转换x这些文字之一 如果x在列表中 我将其退回 否则我返回一个后备值 from typing import Literal Set Foo Literal 0 1 2 foos Set F
  • 如何通过 python 多处理利用所有核心

    我一直在摆弄Python的multiprocessing现在已经使用了一个多小时的功能 尝试使用并行化相当复杂的图形遍历函数multiprocessing Process and multiprocessing Manager import
  • 如何过滤 Pandas GroupBy 对象并获取 GroupBy 对象?

    当对 Pandas groupby 操作的结果执行过滤时 它返回一个数据帧 但假设我想执行进一步的分组计算 我必须再次调用 groupby 这似乎有点绕 有更惯用的方法吗 EDIT 为了说明我在说什么 我们无耻地从 Pandas 文档中窃取
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • Spark 和 Python 使用自定义文件格式/生成器作为 RDD 的输入

    我想问一下 Spark 中输入的可能性 我可以看到从http spark apache org docs latest programming guide html http spark apache org docs latest pro
  • 给定一个排序数组,就地删除重复项,使每个元素仅出现一次并返回新长度

    完整的问题 我开始在线学习 python 但对这个标记为简单的问题有疑问 给定一个排序数组 就地删除重复项 使得每个 元素只出现一次并返回新的长度 不分配 另一个数组的额外空间 您必须通过修改输入来完成此操作 数组就地 具有 O 1 额外内
  • 如何查找或安装适用于 Python 的主题 tkinter ttk

    过去 3 个月我一直在制作一个机器人 仅用代码就可以完美运行 现在我的下一个目标是为它制作一个 GUI 但是我发现了一些障碍 主要的一个是能够看起来不像一个 30 年前的程序 我使用的是 Windows 7 我仅使用 Python 3 3
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • 如何获取pandas中groupby对象中的组数?

    我想知道有多少个独特的组需要执行计算 给定一个名为 groupby 的对象dfgroup 我们如何找到组的数量 简单 快速 Pandaic ngroups 较新版本的 groupby API pandas gt 0 23 提供了此 未记录的

随机推荐

  • 为什么 '\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