Django + Angular + Django-allauth



我正在创建一个web应用程序,使用Django作为后端,Angular作为前端。

Angular在localhost:9000上运行在约曼堆栈上,而Django在localhost:8000上运行,我使用grunt-contrib-proxy将所有$http调用从/api的Angular重定向到Django端口。例如,如果Angular请求localhost:9000/api/hello,它会被重定向到localhost:8000/api/hello, django会提供它。

我计划将Django Rest Framework设置为服务于/api路径的所有Angular请求。

一切顺利。

现在,我已经配置了Django-allauth的安装,可以对第三方服务进行Oauth身份验证。它可以用普通的旧Django工作,但我不知道如何使它与Angular一起工作。

唯一想到的是通过django rest框架服务allauth视图,但是认证后的重定向呢?我想不起来这件事。

放弃这种方法,直接从前端(Angular)进行Oauth认证是不是更好?

编辑:


我设法从Angular中调用login视图

  • grunt-contrib-proxy我已经添加了account上下文和重写规则:

    context:  ['/api', '/accounts'],
    rewrite: {
      '^/api': '/api',
      '^/account': '/accounts'
    }
    
  • 我从angular做了一个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是我添加的)。我觉得我做错了什么

你需要添加一个

Origin: http://localhost:9000 

到angular发送给Django的请求的头文件中。

还要确保Django运行的服务器返回一个

Access-Control-Allow-Origin: * 

最新更新