SPA AngularJS / Django REST中的非持久性身份验证cookie

时间:2013-12-14 21:02:00

标签: django angularjs rest authentication cookies

我几个小时一直在努力解决这个问题: 我有一个用Angular编写的单页面应用程序,它与DjangoREST后端通信。我正在尝试使用会话Cookie实现身份验证功能。我的看法是:

1 /向登录页面显示任何未登记的访客

2 /使用凭据

对网址/登录进行POST

3 /获取“sessionid”cookie并写入用户已记录的服务

4 /将vistor重定向到保留内容并使用get&发布以使用cookie访问内容

登录端点已设置并正常工作。当我发帖时,我收到带有用户信息和Set-Cookie的HTTP 200响应,但后续调用不包含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:felix@vinify.co
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 

我的代码是angular-app示例的一个非常简单的改编: https://github.com/FelixLC/MobileWebApp/blob/master/app/scripts/security/security.js

我在herhost上的localhost上试过这个。服务器和客户端位于不同的域上,允许使用CORS。 当我尝试拨打电话时,我收到Django的错误

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

我应该尝试获取此cookie并将其放入带有angularJS的标题中吗?

您可以尝试使用felix@vinify.co&amp ;;登录http://mobilevinify.herokuapp.com/#/login。测试。然后点击Vinibar,GET请求中有500个内部错误

任何帮助非常感谢 菲利克斯

1 个答案:

答案 0 :(得分:0)

以下是我实际执行身份验证的完整布局。 Django/Angular Authentication。这是一个非常广泛的回应,我非常乐意回答你可能有的其他问题。