Bud*_*hot 7 django cookies session django-rest-framework
我在 Django 项目中的会话面临一个大问题。
后端托管在.my-domain.org,前端使用后端的 REST API .front-end.com。将来,可能会出现完全不同域上的其他前端。
使用django提供的session框架时出现这种情况如何处理?似乎SESSION_COOKIE_DOMAIN只允许在一个子域上设置会话 cookie 。结果是,如果我希望能够在.my-domain.org(ie, SESSION_COOKIE_DOMAIN = None)登录,那么.front-end.com当它调用 API 端点时我无法接收会话 cookie 。另一方面,设置SESSION_COOKIE_DOMAIN为.front-end.com会阻止我连接到站点管理员。SESSION_COOKIE_PATH当然,情况也受到影响...
任何帮助都非常受欢迎。我很确定我不是第一个需要可以从外部域访问具有会话身份验证的 REST API 的人。
Django 使用 cookie 进行基于会话的身份验证,并且这些cookie通常不能跨多个域设置。虽然您可以使用CORS 和稍微解决此问题,但在某些浏览器中默认情况下可能会阻止此操作。withCredentials
跨域工作时,通常最好使用其他身份验证方法。即使您能够让 CORS 与 cookie 一起使用,您也必须与跨域的 CSRF作斗争,Django REST Framework在其文档中指出了这一点。我推荐 OAuth 2,因为它具有广泛的客户端支持和 Django REST Framework 内的支持,但其他人使用时没有出现TokenAuthentication任何问题。
使用 OAuth 时,您需要将前端设置为客户端并使用Web 身份验证流程进行身份验证,否则您会将私钥公开,这不会有好结果。这将以与“单点登录”类似的方式工作,但不需要前端签署请求并保存私钥。您也无需担心 CSRF,因为 Django REST Framework 仅需要它用于SessionAuthentication.
| 归档时间: |
|
| 查看次数: |
2154 次 |
| 最近记录: |