2013-12-14 4 views
1

Я борюсь с этой проблемой в течение нескольких часов: У меня есть одностраничное приложение, написанное в Angular, которое связывается с бэкэндом DjangoREST. Я пытаюсь реализовать автофоку с сессионными куки. Как я вижу это:Непрерывный файл cookie аутентификации в SPA AngularJS/Django REST

1/Показать любое неавторизованный посетитель страницы входа

2/Сделать POST к URL/Войти с учетными данными

3/Получить «сеанса» печенья и письменной форме в услуге, которую пользователь вошедшего

4/Перенаправление vistor в стороне зарезервированного содержания и используемую получить & почты доступ к содержимому с куки

Войти конечную точку уже установлена ​​и работает. Когда я делаю пост, я получаю HTTP 200 ответ с информацией пользователя и Set-Cookie, но последующие вызовы не содержат Cookie:

Request URL: ... 
Request Method:POST 
Status Code:200 OK 
Request Headersview source 
Accept:application/json, text/plain, */* 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 
Connection:keep-alive 
Content-Length:38 
Content-Type:application/x-www-form-urlencoded; charset=UTF-8 
Host:devinify1.herokuapp.. 
Origin:http://mobilevinify.herokuapp... 
Referer:http://mobilevinify.herokuapp... 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 
Form Dataview sourceview URL encoded 
username:[email protected] 
password:test 
Response Headersview source 
Access-Control-Allow-Origin:* 
Connection:keep-alive 
Content-Length:189 
Content-Type:application/json 
Date:Sat, 14 Dec 2013 20:45:14 GMT 
Server:gunicorn/18.0 
Set-Cookie:sessionid=ijz27zy655qn0cwmlnvr66609hsyvdub; expires=Sat, 28-Dec-2013 20:45:14 GMT; Max-Age=1209600; Path=/ 
Vary:Cookie

Мой код очень простая адаптация углового-приложение, например : https://github.com/FelixLC/MobileWebApp/blob/master/app/scripts/security/security.js

Я пробовал это на localhost et on heroku. Сервер и клиент находятся в разных доменах, CORS разрешены. Когда я пытаюсь делать звонки, я получаю сообщение об ошибке от Django

 
TypeError at /vinibarwines/ 
int() argument must be a string or a number, not 'AnonymousUser' 

Если я пытаюсь получить это печенье и положить его в заголовках с angularJS?

Вы можете попробовать войти в систему по адресу http://mobilevinify.herokuapp.com/#/login с помощью [email protected] & test. Затем нажмите на Vinibar, есть 500 внутренняя ошибка при запросе GET

Любая помощь очень ценится Felix

+0

Я пробовал безуспешно зарегистрироваться в домене с доменом django, но в любом случае я всегда использую токены. Это достаточно просто реализовать. Если вам интересно, я могу отправить ответ. –

+0

На самом деле, я наткнулся на ваш github раньше! Я пробовал ваше решение, но работает ли оно, когда мы обновляем страницу? Я не мог заставить ваш проект не разблокировать меня при обновлении. – FelixLC

+0

Да, проект семени не использует файлы cookie, посмотрите ниже ответ, который я представил другим парням, похожим на вопрос. –

ответ

0

Вот полный макет того, как я на самом деле сделать свою проверку подлинности. Django/Angular Authentication. Это довольно обширный ответ, я более чем счастлив ответить на другие вопросы, которые могут возникнуть у вас.

+0

Спасибо за ваш ответ. Это работает хорошо. Однако, если я обновляю или завершаю приложение, вся угловая часть перезагружается и токен теряется: я должен снова аутентифицироваться. Считаете ли вы, что будет обходной путь? Может быть, трудно написать автозапуск в cookie браузера? – FelixLC

+0

@FelixLC Я только что добавил сохраненные жетоны к семени, надеюсь, что это будет полезно. –

Смежные вопросы