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

Get session ID for a django site in javascript

本文关键字:会话 ID 站点 django javascript 获取      更新时间:2023-09-26

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

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

嘿,我认为

这种方法不是最好的方法,您的后端在这里为 XSS 攻击提供了一扇门,我认为您可以做的最好的事情是使用令牌进行身份验证,即使是普通的 token.auth,这在 Django-rest-framework 文档中得到了很好的解释 http://www.django-rest-framework.org/api-guide/authentication/但我使用了很多 JWT JSONweb 令牌身份验证,所以你不会损害令牌以外的其他数据, 用户名或其他自定义内容,例如角色或应用程序逻辑具有的内容,因为 ionic 它的角度 JS,您可以查看 http://frederiknakstad.com/2013/01/21/authentication-in-single-page-applications-with-angular-js/,了解如何管理前端移动应用程序上的身份验证过程。

接著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 或其他方式)中包含访问令牌

Django cookie 默认对 Javascript 不可用,因为默认情况下SESSION_COOKIE_HTTPONLY设置设置为 True,这是有充分理由的。您可以将其设置为 False然后您的 cookie 将可以访问,但随后您的网站将更容易受到 XSS 的攻击。