代码之家  ›  专栏  ›  技术社区  ›  Jasonca1

正在寻找有关Django身份验证和Angular登录页面的帮助

  •  0
  • Jasonca1  · 技术社区  · 7 年前

    我有一个angular登录页面,它向我的django服务器发送一个Ajax请求(在angular应用程序的一个单独端口上侦听),我可以登录我的用户,但在响应中没有返回会话cookie,客户端将其存储在angular应用程序中。以下是my backend settings.py对于特定于身份验证的内容的外观:

    MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',]
    
    # Here are the session specific settings
    SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
    SESSION_COOKIE_HTTPONLY = True
    SESSION_COOKIE_AGE = 1800 # The age of session cookies, in seconds
    CORS_ORIGIN_ALLOW_ALL = True
    

    下面是我的登录视图函数,它连接到我的登录路径:

    @csrf_exempt
    @require_POST
    def login_view(request: HttpRequest):
        payload = request.body.decode()
        body = json.loads(payload)
        username = body['username']
        password = body['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)# Log the user in
            return HttpResponse('Success')
        else:
            return HttpResponseBadRequest()
    

    我尝试使用基于cookie/会话的身份验证,这样,如果用户在会话时间到期之前关闭页面并重新启动,它将引导他们返回登录页面,并且对于特定的输入选择字段,仅应根据用户返回某些选项,这需要通过会话身份验证来处理。我的设置文件中是否有不正确的内容?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Linh    7 年前

    SESSION_COOKIE_SECURE 和 CSRF_COOKIE_SECURE 设置为False,可能是因为您的请求不安全

    Django CSRF Cookie Not Set