2014-07-09 101 views
5

我使用Django作爲後端和Angular創建了一個Web應用程序。Django + Angular + Django-allauth

角是上一個localhost:9000疊約曼運行時,Django是在localhost:8000運行,我使用grunt-contrib-proxy所有從角在/api到Django的端口$http呼叫重定向。例如,如果Angular要求localhost:9000/api/hello,這將重定向到localhost:8000/api/hello,並且django將爲其提供服務。

我打算設置Django Rest Framework/api路徑提供所有角度請求。

到目前爲止這麼好。

現在,我已經配置了一個Django-allauth的工作安裝,用於對第三方服務進行Oauth驗證。它使用普通的舊Django工作,但我不知道如何與Angular結合使用這個工作。

唯一想到的是通過django rest框架服務於allauth視圖,但認證後重定向怎麼辦?我無法圍住它。

放棄這種方法並使Oauth身份驗證直接從前端(Angular)更好嗎?

編輯:
我設法打電話從角

  • login視圖在咕嚕-的contrib代理我已經添加了帳戶背景和重寫規則:

    context: ['/api', '/accounts'], 
    rewrite: { 
        '^/api': '/api', 
        '^/account': '/accounts' 
    } 
    
  • 我從角度做了一個ajax調用,詢問對於allaluth登錄視圖(例如用於github上):$http.get('/accounts/github/login/?process=login')

的問題是,我回來:

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被我加的)。我覺得我做的事情完全錯誤

+0

你有沒有遇到過這個問題?我試圖將一個使用allauth的項目轉移到角度,這是我最大的困難。 –

+1

@FergalMoran不,我放棄了。我已經切換到[Python Social Auth](https://github.com/omab/python-social-auth)+ [Django Rest Framework](http://www.django-rest-framework.org/)。我已經使用[此博客文章](http://blog.wizer.fr/2013/11/angularjs-facebook-with-a-django-rest-api/)作爲出發點,祝你好運! – Leonardo

+0

謝謝萊昂納多,你猜這就是我必須去的方式。那篇博文看起來很棒,謝謝! –

回答

1

你需要一個

Origin: http://localhost:9000 

添加到頁眉在角發送到Django的請求。

還要確保運行的Django服務器返回一個

Access-Control-Allow-Origin: * 

see here for more information