在javascript中获取django网站的会话ID

时间:2015-03-11 21:38:27

标签: javascript django django-rest-framework django-sessions

如何使用javascript获取最终存储在cookie中的django会话ID?

我需要获取该ID的原因是我从REST API执行所有操作,包括身份验证。因此,开发移动应用程序的人正在使用离子,他们希望向API发出请求以获取该会话ID - 然后在将来的请求中使用它。有什么建议吗?

3 个答案:

答案 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或其他)