【问题标题】:Django REST Framework: how to use session-based authentication properly?Django REST Framework:如何正确使用基于会话的身份验证?
【发布时间】:2014-11-13 23:41:59
【问题描述】:

我正在使用 Python/Django 1.7.1 和 Django REST 框架构建一个项目。

我的项目有两个子域:

  • api.myproject.com
  • www.myproject.com

WWW 主机包含用户可以登录的网站。 REST 后端位于 API 主机上。

我这样配置 Django REST 框架:

REST_FRAMEWORK = {   
    'PAGINATE_BY': 10,
    'PAGINATE_BY_PARAM': None,
    'MAX_PAGINATE_BY': 10,
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ),
}

本质上:我在 WWW 主机上对 AJAX 使用基于会话的身份验证,对 Android 应用程序使用基于令牌的身份验证。

现在问题来了。在 WWW 主机上登录的用户可以在 API 主机上使用 REST API,因为启用了会话身份验证。在 WWW 主机上,正在运行的 JavaScript 对 API 主机进行 API 调用。这很好用,但是当用户登录到 WWW 主机然后打开一个新选项卡并转到 API 主机时,用户只能看到 REST API,这不是我的意图。

当用户在 WWW 主机上登录时,是否无论如何都不在 API 主机上显示 REST API?

我这样配置会话 cookie 域和 CSRF cookie 域:

DOMAIN = 'myproject.com'
SESSION_COOKIE_DOMAIN = '.' + DOMAIN
CSRF_COOKIE_DOMAIN = SESSION_COOKIE_DOMAIN

我修改为:

DOMAIN = 'myproject.com'
SESSION_COOKIE_DOMAIN = 'www.' + DOMAIN
CSRF_COOKIE_DOMAIN = SESSION_COOKIE_DOMAIN

但是在尝试这个时,当用户登录 WWW-host 时,REST API 无法通过会话身份验证使用,因为 cookie 仅为 WWW-host 设置...

对我的问题有什么建议吗? :-)

提前致谢!

亲切的问候, K.

【问题讨论】:

    标签: rest session authentication


    【解决方案1】:

    基本上...我的问题有点愚蠢,您可以根据需要通过实施权限来解决这个问题。问题解决了! :-)

    【讨论】:

      猜你喜欢
      • 2019-02-20
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2019-01-18
      • 2015-11-12
      • 2017-04-13
      • 2013-05-03
      • 2011-09-27
      相关资源
      最近更新 更多