0

在我的Django Rest Framework應用程序中,使用信號使用第三方OpenID身份驗證登錄的每個用戶都會生成一個令牌。現在我可以使用此令牌(通過手動前往數據庫並獲取令牌)對具有authentication_classes = (TokenAuthentication,)的視圖進行API調用。Django Rest Framework令牌身份驗證與社交身份驗證登錄

有人可以解釋我如何在(OpenID)登錄成功時向用戶安全地提供此令牌。

Django的REST框架支持類似:

from rest_framework.authtoken import views 
urlpatterns += [ 
    url(r'^api-token-auth/', views.obtain_auth_token) 
] 

但是,這obtain_auth_token觀點僅支持POST請求這需要用戶名和密碼,這是不符合我的應用程序的情況。

如果我的工作流程中有任何缺陷,請糾正我的錯誤。

+0

聽起來像JWT是你在找什麼? – Thomas

回答

0

您對問題的解釋非常合理。

正如評論中指出的那樣,使用jwt是一種選擇。 Json Web Tokens(JWT)會將信息轉換爲指定的編碼,然後您可以解碼令牌值以獲取更多請求。

import jwt 
encoded = jwt.encode(
    { 
     'open_id_token': '<open_id_token_value>' 
    }, 
    '<some_random_secret>', 
    algorithm='HS256' 
) 
print encoded 

decoded = jwt.decode(encoded) 
print decoded 
> {'open_id_token': '<open_id_token_value>'} 

此選項使用庫直接並安全地轉換您可以與您的用戶共享的OpenID令牌。