Utiliser Django 1.10incapable de définir et récupérer les variables de session
Mon middleware est défini comme suit:
MIDDLEWARE = [
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'wagtail.wagtailcore.middleware.SiteMiddleware',
'wagtail.wagtailredirects.middleware.RedirectMiddleware',
]
je me suis assuré d'inclure la session MOTEUR
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
J'ai mon client secret et id défini comme suit:
os.environ['CLIENT_SECRET'] = 'something'
os.environ['CLIENT_ID'] = 'something'
et mes vues sont configurés pour faire un rappel, les variables de session magasin comme suit:
def potato_oauth_callback(request):
POTATO_OAUTH2_TOKEN_ENDPOINT = "https://login.potato.com/potatoservices/potatooauth2/potatotoken"
POTATO_SECRET = get from env variables
POTATO_ID = get from env variables
POTATO_TYPE = "authorization_code"
POTATOCALLBACK_URL = "https://potatourl/potatoes/potatocallback"
authorization_code = request.GET.get('code')
payload = {
'potato_type': POTATO_TYPE,
'potato_id': POTATO_ID,
'potato_secret': POTATO_SECRET,
'potato_uri': POTATOCALLBACK_URL,
'code': potato_code
}
r = requests.post(POTATO_OAUTH2_TOKEN_ENDPOINT, data=potatoload)
resp = r.json()
potatoAccess = {
'id': resp['id'],
'timestamp': resp['issued_at'],
'instanceURL': resp['instance_url'],
'signature': resp['signature'],
'accessToken': resp['access_token']
}
request.session['potatoAccess_id'] = potatoAccess['id']
request.session['potatoAccess_timestamp'] = potatoAccess['timestamp']
request.session['potatoAccess_instanceURL'] = potatoAccess['instanceURL']
request.session['potatoAccess_signature'] = potatoAccess['signature']
request.session['potatoAccess_accessToken'] = potatoAccess['accessToken']
return HttpResponse(t.render({}, request))
Par la suite, quand je fais une demande de revérifier mes variables de session, je continue à obtenir des erreurs clés et je suis incapable de les récupérer:
def check_potatoes(request):
c = {}
c['potatoAccess_id'] = request.session['potatoAccess_id']
print request.session['potatoAccess_id']
return HttpResponse(json.dumps('potatoes'), content_type='application/json')
OU
def check_potatoes(request):
try:
c = {}
c['potatoAccess_id'] = request.session['potatoAccess_id']
print request.session['potatoAccess_id']
return HttpResponse(json.dumps('potatoes'), content_type='application/json')
except Exception as potatoes:
potatoesdata = {'message': potatoes.message}
return HttpResponse(json.dumps(potatoesdata), content_type='application/json')
A noter, quand je fais le rappel initial, je peux confirmer que:
request.session['potatoAccess_id'] returns a value
potatoAccess['id'] returns a value
lors du changement de vues (autre méthode appelée via ajax) je reçois ces keyErrors comme si les valeurs n'a jamais existé