2016-05-31 61 views
0

我正在嘗試編寫一個將用戶重定向到OAuth URL以進行身份​​驗證/授權的Python 3.5 Flask應用程序。作爲重定向的一部分,我必須包含Authorization標題。 Flask中內置的redirect()方法似乎不支持添加HTTP標頭。重定向到帶有標頭的OAuth網址

在這樣的應用程序中處理此問題的正確方法是什麼?

+0

您是否嘗試過使用https://pythonhosted.org/Flask-OAuth/? – jonrsharpe

+0

@jonrsharpe我還沒有嘗試過,沒有。我試圖理解原始過程,但最終我可能會最終加入類似的東西。它表示它只與oAuth 1.0a兼容,並且有相當多的oAuth 2.0服務。 –

+0

如果你想自己實現它,這裏有一個Flask的OAuth 2例子:https://github.com/reddit/reddit/wiki/OAuth2-Python-Example。但它似乎沒有重定向。 – jonrsharpe

回答

1

您將需要構建自己的響應對象來添加標題。你可以看看這裏的文檔:http://docs.python-requests.org/en/master/api/#requests.Response

爲您的使用情況下,一個簡單的例子是這樣的:

response = Response(headers={'Authorization': 'whatever'}, 
        is_redirect=True, 
        url="https://your-redirected-url.com") 
return response 

編輯:進一步信息

另外,我想看看https://github.com/lepture/flask-oauthlib如果你是有興趣使用圖書館。它支持oAuth1和oAuth2,使用標準Flask應用程序進行安裝相對容易。

編輯:做

今天早上,我想起了一個簡單的方法來做到這一點的另一種方式。你可以調用重定向函數,它將返回一個瓶頸響應對象。然後你就可以在新創建的對象上設置標題。

response = redirect('https://url') 
response.headers = {'authorization': 'whatever'} 
return response 
+0

謝謝,但根據Python 3.5的請求庫,Response()類不可調用。因此,我不能實例化它。有什麼想法嗎? –

+0

上面的答案是使用燒瓶響應類。我將更新一個不會創建它自己的Response對象的附加解決方案。 – pech0rin

+0

上面的答案是使用插件模塊,而不是燒瓶響應類。 – bmjjr