Flask-login和LDAP

mon*_*res 6 python flask flask-login

我正在开发一个带有flask框架作为后端的webapp,我需要提供身份验证.

由于这是我们在本地域上使用的内部应用程序,因此我选择使用其现有的域凭据对用户进行身份验证.

我使用的方法是win32security.LogonUserpywin32成功登录时返回句柄.

我试图了解flask-login如何工作,但@login_manager.user_loader回调让我感到困惑.

它说我应该提供一个可用于重新加载用户的id,但是我没有数据库或持久存储来提供这种映射,因为我只是在检查用户是否通过身份验证时感兴趣.

我的User类看起来像这样:

class User(flask_login.UserMixin):
    def __init__(self,username):
        self.username = username
        self.id = ??? 
Run Code Online (Sandbox Code Playgroud)

使用什么id,这个id如何映射回这个实例?

140*_*ser 11

您可以使用LDAP模块在python中执行此操作:

LDAP_SERVER = "yourldapserver"
LDAP_PORT = 390033 # your port
import ldap
def login(email, password):
    ld = ldap.open(LDAP_SERVER, port=LDAP_PORT)
    try:
        ld.simple_bind_s(email, password)
    except ldap.INVALID_CREDENTIALS:
        return False
    return True
Run Code Online (Sandbox Code Playgroud)


cod*_*eek 6

Flask-login不依赖于或需要用户的任何特定后端.您必须表示用户对象并返回id.比如看这篇文章

flask-login:无法理解它是如何工作的