您不應該在查詢字符串中傳遞訪問令牌,如/?token=my_token
。它不是一個安全的方式,絕對不推薦。
您可以使用其他一些方法是:
方法1:在響應頭
您可以設置訪問令牌的響應報頭,並使用HTTPS協議發送設置server_access_token
。
令牌將被髮送一次並被客戶端使用。由於響應標頭未在後續請求中傳遞,令牌只會傳遞給客戶端一次。然後,客戶端將通過在請求標頭中設置令牌來使用它來發出進一步的請求。
class MySocialApplicationRedirectView(View):
def get(self, request, *args, **kwargs):
# Here, write your code to fetch the {application}'s access token,
# creating a new user with your server's access token, and then
# associating it with {application}'s access token
# assign the response to a variable and set the access token as a header in the response
response = HttpResponseRedirect('/accounts/profile/')
response['X-Auth-Token'] = 'my_server_access_token'
# can also use the below name as 'X-' prefixed headers are deprecated
# response['Auth-Token'] = 'my_server_access_token'
return response
客戶端然後可以從標題中檢索令牌並使用此令牌進行進一步的請求。在進一步的請求中,他必須在請求標題中發送訪問令牌。
方法2:設置server_access_token
作爲cookie
另一種選擇是設置server_access_token
餅乾作爲@Ben提到你的迴應。
response.set_cookie()
將在響應中設置server_access_token
cookie,然後客戶端可以讀取cookie並在請求頭中的其他請求中發送該cookie。
class MySocialApplicationRedirectView(View):
def get(self, request, *args, **kwargs):
# Here, write your code to fetch the {application}'s access token,
# creating a new user with your server's access token, and then
# associating it with {application}'s access token
# assign the response to a variable and set the access token as a cookie in the response object
response = HttpResponseRedirect('/accounts/profile/')
response.set_cookie(key, value='my_server_access_token', ..other parameters)
return response
注:出於安全,所有的要求(包括獲取和使用代幣)必須使用HTTPS端點。
什麼是客戶打算與服務器的訪問令牌呢? –
我將使用服務器的訪問令牌請求數據,如果數據位於{application}上,我的服務器將使用{application}的訪問令牌請求數據並返回給客戶端。 –