使用ldap3实现flask-login的简单示例。
from flask_ldap3_login.forms import LDAPLoginForm
from flask_ldap3_login import LDAP3LoginManager, AuthenticationResponse
from flask_login import LoginManager, login_user, UserMixin, current_user
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
app.config['DEBUG'] = 'True'
app.config['LDAP_PORT'] = 636
app.config['LDAP_HOST'] = 'ldap-name.com'
app.config['LDAP_USE_SSL'] = True
app.config['LDAP_BASE_DN'] = 'dc=Hostname,dc=com'
app.config['LDAP_USER_DN'] = 'ou=people'
app.config['LDAP_GROUP_DN'] = 'cn=ldap-groupname,ou=groups'
app.config['LDAP_USER_RDN_ATTR'] = 'uid'
app.config['LDAP_USER_LOGIN_ATTR'] = 'uid'
app.config['LDAP_BIND_USER_DN'] = 'uid'
app.config['LDAP_BIND_USER_PASSWORD'] = 'pwd'
login_manager = LoginManager(app)
ldap_manager = LDAP3LoginManager(app)
users = {}
class User(UserMixin):
def __init__(self, dn, username, data):
self.dn = dn
self.username = username
self.data = data
def __repr__(self):
return self.dn
def get_id(self):
return self.dn
@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, memberships):
user = User(dn, username, data)
users[dn] = user
return user,username
@app.route('/', methods=['GET', 'POST'])
def login():
form = LDAPLoginForm()
if form.validate_on_submit():
a = login
return redirect(url_for('mainpage'))
return render_template('login.html',form=form)
else:
return render_template('error.html')