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



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

1/向任何未登录的访问者显示登录页面

2/使用凭据对url进行POST/登录

3/获取一个"sessionid"cookie,并在用户记录的服务中写入

4/将访问者重定向到保留的内容和已使用的get&张贴以使用cookie 访问内容

登录终结点已经设置并且可以工作。当我发帖时,我会收到一个HTTP 200响应,其中包含用户信息和设置Cookie,但随后的调用不包含Cookie:

请求URL:。。。请求方式:POST状态代码:200 OK请求标头查看源接受:application/json,text/plain*/*接受编码:gzip、deflate、sdch接受语言:fr-fr,fr;q=0.8,en-US;q=0.6,en;q=0.4连接:保持活动内容长度:38内容类型:application/x-www-form-urlencoded;charset=UTF-8主持人:devinify1.herokuapp。。原产地:http://mobilevinify.herokuapp...参考人:http://mobilevinify.herokuapp...用户代理:Mozilla/5.0(Macintosh;Intel Mac OS X 10_9_0)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/31.1650.63 Safari/537.36表单数据视图源视图URL编码用户名:felix@vinify.co密码:测试响应标头查看源访问控制允许来源:*连接:保持活动内容长度:189内容类型:application/json日期:2013年12月14日星期六20:45:14 GMT服务器:gunicorn/18.0设置Cookie:sessionid=ijz27zy655qn0cwmlnvr66609hsyvdub;expires=2013年12月28日星期六20:45:14 GMT;最大年龄=1209600;路径=/Vary:Cookie

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

我已经在本地主机和heroku上尝试过了。服务器和客户端位于不同的域上,允许CORS。当我尝试打电话时,我收到Django 的错误

/vinibarwines处的类型错误/int()参数必须是字符串或数字,而不是"AnonymousUser"

我应该试着用angularJS把这个cookie放在标题中吗?

您可以尝试登录http://mobilevinify.herokuapp.com/#/login具有felix@vinify.co&测验然后点击Vinibar,在GET请求上有一个500内部错误

非常感谢您的帮助Felix

以下是我实际如何进行身份验证的完整布局。Django/Angular身份验证。这是一个相当广泛的回答,我非常乐意回答您可能提出的进一步问题。

最新更新