Установить Cookie в колбу Перенаправление на внешний URL - PullRequest
2 голосов
/ 06 июля 2019

Я хочу перенаправить пользователя из моего приложения-колбы в клиентское приложение с заголовком (закодированный объект сеанса), который браузер может сохранить как файл cookie для дальнейших запросов.

Я аутентифицирую пользователя, используяна другом сервере и при успешном входе он перенаправляется в мое приложение фляги, где я указываю пользователя в базе данных и объект сеанса.И сразу после этого мне нужно перенаправить запрос в мое клиентское приложение.Итак, я использую flask.redirect, чтобы перенаправить пользователя в мое клиентское приложение.Теперь, чтобы браузер сохранил информацию о пользователе, я хочу отправить объект сеанса в браузер в виде файла cookie.

TLDR;Вот что я пытаюсь сделать:

  1. Клиент достигает контент-сервера.
  2. У клиента нет активного сеанса, он перенаправляется на сервер аутентификации с обратным вызовом на контент-сервер.
  3. Сервер содержимого создает сеанс и перенаправляет обратно клиенту с файлом cookie сеанса.
  4. Клиент достигает сервера содержимого.
  5. Сервер содержимого проверяет файл cookie сеанса и разрешает доступ клиенту.

Аутентификация выполняется на отдельном сервере, но контент-сервер и клиент должны отслеживать сеанс с помощью файла cookie.Часть, которую я не могу сделать, - заставить клиента (localhost: 3000) отслеживать сеанс.

Вот что я попробовал:

resp = flask.make_response()
resp.set_cookie('Set-Cookie', 'this is the session cookie I want the browser to set for further requests')
return flask.redirect('http://localhost:3000/', Response=resp)

Это выдает мне ошибку:

File "/home/shaily/.virtualenvs/venv/lib/python3.6/site-packages/werkzeug/utils.py", line 507, in redirect

mimetype="text/html",

TypeError: __call__() got an unexpected keyword argument 'mimetype'

Есть ли альтернатива или способ исправить это?

1 Ответ

0 голосов
/ 06 июля 2019

«функция перенаправления» может быть изменена следующим образом.

    resp = redirect("http://localhost:5001")
    resp.set_cookie('a', 'x')
    return resp

Ссылаясь на комментарий к этому вопросу, мы не можем передать объекты 'Response' для перенаправления. Ответ должен быть другим Класс (полезно, когда класс-оболочка werkzeug.Response) как написано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...