如何使用javascript获取最终存储在cookie中的django会话ID?
我需要获取该ID的原因是我从REST API执行所有操作,包括身份验证。因此,开发移动应用程序的人正在使用离子,他们希望向API发出请求以获取该会话ID - 然后在将来的请求中使用它。有什么建议吗?
答案 0 :(得分:4)
嘿,我认为这种方法不是最好的方法,你的后端在这里有XSS攻击的门,我认为最好你可以使用一个令牌进行身份验证,即使是正常的token.auth,这在django上有很好的解释 - rest-framework docs http://www.django-rest-framework.org/api-guide/authentication/但是我使用了很多JWT JSONweb令牌auth所以你不要妥协其他数据而不是令牌,用户名或其他自定义的东西,比如角色或你的应用程序逻辑所拥有的东西,因为离子它的角度JS你可以采取查看http://frederiknakstad.com/2013/01/21/authentication-in-single-page-applications-with-angular-js/,了解如何在前端移动应用上管理身份验证过程。
答案 1 :(得分:2)
默认情况下,Django cookie不可用于Javascript,因为SESSION_COOKIE_HTTPONLY
设置默认设置为True
,这是有充分理由的。您可以将其设置为False
,然后您的Cookie可以访问,但您的网站将more vulnerable to XSS。
答案 2 :(得分:2)
来自codeadict的回答:
您可以使用JSON Web令牌,但它们涉及的更多一点。最简单的解决方案是使用令牌身份验证,您可以按照此处的说明进行设置:
http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication
当您使用Ionic(在引擎盖下使用AngularJS)时,一个可能更好的解决方案是一个名为django-rest-auth的软件包,用于完成您正在做的事情。
获取该设置的说明在http://django-rest-auth.readthedocs.org/en/latest/,他们还在此处发布了AngularJS模块:https://github.com/Tivix/angular-django-registration-auth
不要忘记打开HTTPS / SSL,因为使用令牌身份验证而不是非常不安全。
上面链接的角度模块处理为您获取和存储这些令牌,然后您需要在每次向api发出请求时包含访问令牌(通过$ http或$ request或其他)