Колба ldap3 проблема с логином - PullRequest
0 голосов
/ 05 марта 2019

Я использую Ldap3 с Python Flask.
Я получаю сообщение об ошибке при попытке входа в систему:

TypeError: Объект типа 'Attribute' не является сериализуемым JSON

Вот код:

def ADlogin(username,password):
    server = ldap3.Server(server_uri, get_info=ldap3.ALL)
    connection = ldap3.Connection(server, user=username+base, password=password)
    if not connection.bind():
        return False
    else:
        connection.search(username+base, '(objectClass=*)', attributes=ldap3.ALL_ATTRIBUTES)
        session['username'] = username
        session['uid'] = connection.entries[0].uid
        connection.search('dc=example,dc=com', '(objectclass=posixGroup)',
                          attributes=[ALL_ATTRIBUTES, ALL_OPERATIONAL_ATTRIBUTES])
        for entry in connection.entries:
            if entry.cn == 'service':
                for user in entry.memberUid:
                    if user == session['uid']:
                        session['group_service'] = True
                        break
            elif entry.cn == 'management':
                for user in entry.memberUid:
                    if user == session['uid']:
                        session['group_management'] = True
                        break
        return True

и страница входа в систему:

@app.route("/login", methods=['GET', 'POST'])
def login():
    if request.method == "POST" and request.form['submit'] == "Sign in":
        username = request.form['username']
        password = request.form['password']
        if utils.isEmpty(username) or utils.isEmpty(password):
            return render_template('login.html', status="Please Enter All Fields")

        else:
            status = ADConnect.ADlogin(username,password)
            if status:
                #return redirect(url_for('dashboard'))
                return "Success"
            else:
                return render_template('login.html', status=status)



    else:
        return render_template('login.html')

Код работает нормально в консоли Python, но когда я пробую его с помощью колбыпоказывает эту ошибку, я не могу найти решение этой проблемы.

1 Ответ

0 голосов
/ 12 марта 2019

Найти причину ошибки:

Вот строка или ошибка: session ['uid'] = connection.entries [0] .uid

The connection.entries [0].uid имеет тип ATTRIBUTE, и я пытаюсь установить его в сеансе, вызывая ошибку.

Я изменяю тип атрибута на строку, и теперь он работает!

...