如何创建Flask-ldap3-login



我使用的是flask-ldap3-login。flask_login运行良好,现在我们想使用我们公司的ldap。所以我对这个部分真的很陌生。有了烧瓶登录,一切都很好。但有了flask-ldap3-login,我无法访问。

show_usermanagement.html

{{ get_flashed_messages() }}
{{ form.errors }}
<form class="form-signin" method="POST">
<h3 class="form-signin-heading">Please sign in</h3>
<label>Username{{ form.username() }}</label>
<label>Password{{ form.password() }}</label>
{{ form.submit() }}
</form>

索引.py

from flask_ldap3_login import LDAP3LoginManager
...
Base = automap_base()
app = Flask(__name__)
Bootstrap(app)
app.config['SECRET_KEY'] = 'secret'
app.config['DEBUG'] = True
...
# Setup LDAP Configuration Variables
# Hostname of your LDAP Server
app.config['LDAP_HOST'] = 'ldap://ska11-wn-dc01.xxx.xxx.de'
app.config['LDAP_BASE_DN'] = 'dc=xxx,dc=xxx,dc=de'
app.config['LDAP_USER_DN'] = 'ou=users'
app.config['LDAP_SEARCH_BASE'] = 'ou=Standorte,dc=xxx,dc=xxx,dc=de'
#app.config['LDAP_GROUP_DN'] = 'ou=groups'
app.config['LDAP_USER_RDN_ATTR'] = 'cn'
app.config['LDAP_USER_LOGIN_ATTR'] = 'mail'
app.config['LDAP_BIND_USER_DN'] = None
app.config['LDAP_BIND_USER_PASSWORD'] = None
app.config['LDAP_USER_SEARCH_SCOPE'] = 'SUBTREE'

login_manager = LoginManager(app)
ldap_manager = LDAP3LoginManager(app)

init.py

@login_manager.user_loader
def load_user(id):
if id in users:
return users[id]
return None
@ldap_manager.save_user
def save_user(dn, username, data, membership):

user = Users(dn, username, data)
users[dn] = user
return user
@app.route("/usermanagement", methods=['GET', 'POST'])
def show_usermanagement():
form = LDAPLoginForm()
if form.validate_on_submit():
flash("You are logged in", 'success')
login_user(form.user)
return redirect('/')  # Send them home
else:
flash("You are not logged in. Please check your credentials!", 'danger')

在浏览器中,我得到了以下响应:["您未登录。请检查您的凭据!"]{'csrf_token':["csrf令牌丢失。"]}但我不确定这是什么原因。我在这个问题上看到了不同的东西(错误的LDAP配置变量…(我使用flask_login从来没有遇到过csrf的任何问题!?我们的ldaps端口使用636可能有问题吗?

希望有人能帮我???

看起来您的索引与init文件(btw,应该是__init.__py(混合在一起

似乎是CSRF的问题,而不是LDAP。

尝试将以下内容添加到您的配置中:

app.config["WTF_CSRF_ENABLED"] = False

看看这是否有效。

最新更新