Windows 使用 Django 和 Angular 进行身份验证?

Windows authentication with Django and Angular?

我正在尝试使用 Angular、Django、IIS 服务器实现单个 sign-on。

在 IIS 中 windows 身份验证已启用。

Angular拦截器代码:

intercept(req: HttpRequest<any>, next: HttpHandler):Observable<HttpEvent<any>> {   
 console.log("in intercept")   
 req = req.clone({  
 withCredentials: true });    
return next.handle(req);  }

Django 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.auth.middleware.RemoteUserMiddleware',    'django.contrib.messages.middleware.MessageMiddleware',    'django.middleware.clickjacking.XFrameOptionsMiddleware',]

AUTHENTICATION_BACKENDS = (    'django.contrib.auth.backends.RemoteUserBackend',)

CORS_ORIGIN_ALLOW_ALL = True

ALLOWED_HOSTS = ["*"]

获取错误: (IP-address) 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在 'Access-Control-Allow-Origin' header。

问题出在Django设置上,请看这个link:

如果一开始尝试不成功,去掉所有 settings.py 并从头开始设置,首先检查是否没有出现 CORS 问题,然后添加身份验证复杂性。

尝试django-cors-headers pip install django-cors-headers

并进行设置 在你的 settings.py

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

您还需要添加一个中间件 class 来监听响应:

MIDDLEWARE = [  # Or MIDDLEWARE_CLASSES on Django < 1.10
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

CorsMiddleware 应该放在尽可能高的位置,尤其是在任何可以生成响应的中间件之前,例如 Django 的 CommonMiddleware

CORS_ORIGIN_ALLOW_ALL = True

在 settings.py

中尝试此配置

CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = True

CORS_ALLOW_CREDENTIALS = True # 使用 withCredentials 时需要这个:true