2014-07-09 13 views
5

Tworzę aplikację internetową wykorzystującą Django jako backend i Angular dla frontu.Django + Angular + Django-allauth

kątowa jest uruchomiony na Yeoman stos na localhost:9000 podczas Django działa na localhost:8000 i używam grunt-contrib-proxy przekierować wszystkie połączenia z $http kątowy z /api do portu Django. Na przykład, jeśli Angular prosi o localhost:9000/api/hello, zostanie przekierowane na localhost:8000/api/hello, a django będzie je wyświetlać.

Mam zamiar skonfigurować Django Rest Framework do obsługi wszystkich żądań kątowych do ścieżki /api.

Jak dotąd tak dobrze.

Mam już skonfigurowaną i działającą instalację Django-allauth do autoryzacji Oauth dla usług stron trzecich. To działa przy użyciu zwykłego starego Django, ale nie mam pojęcia, jak to zrobić w połączeniu z Angular.

Jedyne, co przychodziło na myśl, to wyświetlanie widoków allauth za pośrednictwem repozytorium django, ale co z przekierowaniem po uwierzytelnieniu? Nie mogę otoczyć się tym.

Czy lepiej jest zrezygnować z tego podejścia i uczynić autoryzację Oauth prosto z przodu (Angular)?

EDIT:
udało mi się wywołać login widok z Kątowymi

  • W grunt-contrib-proxy Dodałem konta kontekst i przepisać regułę:

    context: ['/api', '/accounts'], 
    rewrite: { 
        '^/api': '/api', 
        '^/account': '/accounts' 
    } 
    
  • Wykonałem wywołanie ajax z kąta, pytając dla widoku allaluth logowania (na przykład dla github): $http.get('/accounts/github/login/?process=login')

Problemem jest to, że wrócę:

XMLHttpRequest cannot load https://github.com/login/oauth/authorize?scope=&state=BlaBla&redirect…ub%2Flogin%2Fcallback%2F&response_type=code&client_id=BlaBlaBla. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. (index):1 

(BlaBla został dodany przeze mnie). Myślę, że robię coś zupełnie złego

+0

Czy kiedykolwiek dotarłeś do tego problemu? Próbuję przenieść projekt, który wykorzystuje allautha do kątowego i jest to mój największy punkt krytyczny. –

+1

@FergalMoran Nie, zrezygnowałem na teraz. Przełączyłem się na [Python Social Auth] (https://github.com/omab/python-social-auth) + [Django Rest Framework] (http://www.django-rest-framework.org/).Użyłem [tego wpisu na blogu] (http://blog.wizer.fr/2013/11/angularjs-facebook-with-a-django-rest-api/) jako punktu wyjścia, powodzenia! – Leonardo

+0

Dzięki Leonardo, domyślam się, że tak też będę musiał iść. Ten wpis na blogu wygląda świetnie, dzięki! –

Odpowiedz

1

Trzeba dodać

Origin: http://localhost:9000 

do nagłówka w żądaniu, że kątowa wysyła do Django.

Upewnij się także, że serwer działa Django zwraca

Access-Control-Allow-Origin: * 

see here for more information.