Ошибка типа: ожидаемые байты при попытке отправить cookie в колбу - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь создать страницу входа в систему для своего проекта, для внешнего интерфейса я использовал brython (браузер python).Используя brython, я получил данные формы и отправил их в конечную точку / auth / login.Иногда данные не принимаются, но самая большая проблема возникает, когда я пытаюсь вернуть cookie, если значение флажка Запомнить меня установлено в true, поэтому пользователь автоматически входит в систему при посещении сайта, а не использует сеансы, срок действия которых истекает по окончании просмотра.

Сначала я пытался отправить два файла cookie ответа, один для запоминания пользователя, а другой для хранения электронной почты пользователя, чтобы можно было повторно инициализировать сеанс ['email'].Я прочитал несколько форумов и понял, что этого нельзя достичь, и это было подтверждено в документации на колбу.Поэтому я изменил код и удалил cookie-файл электронной почты, но все равно получаю ту же ошибку.Я также попытался изменить ключ в байтовую строку, но безуспешно.Извините, если код спагетти, но я все еще новичок в веб-разработке.Если что-то еще нужно, пожалуйста, спросите, любая помощь приветствуется.

    #code in app.py
    @app.route('/auth/login', methods=['POST'])
    def user_authen():
        global login_success
        global login_tries
        email = request.form.get('email', 0, type=str)
        print(email)
        password = request.form.get('password', 0, type=str)
        print(password)
        remember = request.form.get('remember', 0, type=bool)
        print(remember)
        login_tries = request.form.get('tries', 0, type=int)
        print(login_tries)
        if User.login_valid(email, password):
            login_success = True
            User.login(email)
            if remember:
               resp = make_response("True")
               return resp.set_cookie('login', True, 
    expires=datetime.datetime.now() + datetime.timedelta(days=365))
           else:
                print(User.login_valid(email, password))
                return "True"
        else:
            print("login_valid", User.login_valid(email, password))
            session["email"] = None
            login_success = False
            return "return False"
Traceback (most recent call last):
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\app.py", line 2328, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\app.py", line 2314, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\app.py", line 1760, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\_compat.py", line 36, in reraise
    raise value
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\app.py", line 2311, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\app.py", line 1834, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\app.py", line 1737, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\_compat.py", line 36, in reraise
    raise value
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\app.py", line 1832, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\flask\app.py", line 1818, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\projects\dynamic_web\src\app.py", line 145, in user_authen
    return resp.set_cookie('login', True, expires=datetime.datetime.now() + datetime.timedelta(days=365))
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\werkzeug\wrappers\base_response.py", line 481, in set_cookie
    samesite=samesite,
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\werkzeug\http.py", line 1144, in dump_cookie
    value = to_bytes(value, charset)
  File "C:\Users\nayja\Desktop\Python Projects\.venvs\lpthw\lib\site-packages\werkzeug\_compat.py", line 202, in to_bytes
    raise TypeError("Expected bytes")
TypeError: Expected bytes
...