Проверка подлинности Windows с Django и Angular? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь реализовать единый вход с использованием сервера Angular, Django, IIS.

В IIS Windows аутентификация включена.

Код углового перехватчика:

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

Джанго 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-адрес) был заблокирован политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: На запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

try django-cors-headers pip install django-cors-headers

И настройте его В вашем settings.py

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

Вам также необходимо добавить промежуточное ПОкласс для прослушивания ответов:

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

CorsMiddleware следует размещать как можно выше, особенно перед любым промежуточным программным обеспечением, которое может генерировать ответы, например CommonMiddleware Django

CORS_ORIGIN_ALLOW_ALL = True
0 голосов
/ 04 февраля 2019

Попробуйте эту конфигурацию в settings.py

CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = True

CORS_ALLOW_CREDENTIALS = True # Это необходимо при использовании withCredentials: true

0 голосов
/ 02 февраля 2019

Проблема будет в настройке Django, пожалуйста, посмотрите на эту ссылку: https://stackoverflow.com/a/38162454/4587598

Если первая попытка не сработает, удалите все settings.py и настройте с нуля, сначала проверив, не возникает ли проблема с CORS, а затем добавьте сложность аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...