簡體   English   中英

session 未存儲在 Django 中的瀏覽器中

[英]session not storing on browser in Django

我正在嘗試構建一個應用程序,前端使用React TSX ,后端使用Django 我想使用SESSION_ENGINE=django.contrib.sessions.backends.signed_cookies將 session 存儲在瀏覽器上。 因此,我想以類似於PHPApache存儲其會話的方式存儲會話。 我已經嘗試了很多方法,但我仍然無法存儲會話,我不斷從我的代碼中獲取 output SESSION IS NOW SET 任何幫助都會很棒。 謝謝

login.tsx

import Cookies from "js-cookie";
import axios, { AxiosResponse, AxiosError } from "axios";

..........
..........

axios.request({
    url: "login/",
    baseURL: "http://localhost:8000/",
    method: "POST",
    data: data,
    timeout: 15000,
    withCredentials: true,
    headers: { "X-Requested-With": "XMLHttpRequest", "X-CSRFToken": Cookies.get("csrftoken") },
    validateStatus: () => true
}).then((res: AxiosResponse): void => {
    console.log(res.data);
});

login.py

from django.http import HttpResponse

def get(req):
    req.session.modified = True

    if req.session.get("user_id", False):
        return HttpResponse("EXISTS: " + req.session.get("user_id"))   <-- THIS OUTPUT IS NEVER BEING RETRIEVED
    else:
        req.session["user_id"] = "USER-ID"
        req.session.save()
        return HttpResponse("SESSION IS NOW SET")   <-- THIS IS THE ONLY OUTPUT BEING RETRIEVED

settings.py

..........
..........

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders'
]

SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_NAME = "sessioninfo"

CORS_ORIGIN_WHITELIST = [ "http://localhost:5000" ]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = ["GET","POST"]
CORS_ALLOW_HEADERS = [ "accept", "accept-encoding", "authorization", "content-type", "dnt", "origin", "user-agent", "x-csrftoken", "x-requested-with" ]

CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True

..........
..........

我想到了。 我所要做的就是編輯我的settings.py到這個:

..........
..........

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders'
]

SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies"
SESSION_COOKIE_NAME = "user_session"
SESSION_COOKIE_HTTPONLY = True
SESSION_SAVE_EVERY_REQUEST = True
SESSION_EXPIRE_AT_BROWSER_CLOSE = True

CORS_ORIGIN_WHITELIST = [ "http://localhost:5000" ]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = ["GET","POST"]
CORS_ALLOW_HEADERS = [ "accept", "accept-encoding", "authorization", "content-type", "dnt", "origin", "user-agent", "x-csrftoken", "x-requested-with" ]

CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True

..........
..........

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM