在javascript中获取django站点的会话ID
Get session ID for a django site in javascript
如何使用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 的攻击。
- PHP会话ID变量与AJAX一起返回
- 在javascript中获取django站点的会话ID
- 核心ajax每次都发送具有不同会话id的请求
- 如何在java脚本中获取会话id
- 在Express中手动设置会话ID
- Socket.io:随时获取客户端会话 ID
- 从 WebDriverJS 确定会话 ID
- IE 窗口.在第二个会话时打开 打开一个具有第一个会话 ID 的窗口
- 使用 Javascript 捕获会话 ID
- 无法从带有 Socket.IO 的 Cookie 获取快速会话 ID
- 如何从浏览器的 cookie 存储中删除会话 ID
- 为什么会话在 JSP 中的会话超时后具有会话 ID
- 如何在 Cookie 中将会话 ID 设置为在会话结束时过期
- 当请求一个JS文件时,为什么需要cookie信息(会话ID)
- 如何可靠地获取Google Analytics生成的会话id
- 将会话ID/密钥作为请求参数传递时存在安全风险
- opencart跟踪会话id
- 带有会话id的流星路由
- 在cookie中保存变量- console.log返回具有会话id的变量
- 传递会话ID变量,如果内联JS函数允许它在其他地方使用