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
我正在尝试使用 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